⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 game.h

📁 vc编写的超级坦克源码,vc6编写
💻 H
字号:
// Game.h: interface for the CGame class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_GAME_H__57350DA2_B866_449D_9135_643C2C305326__INCLUDED_)
#define AFX_GAME_H__57350DA2_B866_449D_9135_643C2C305326__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "TankMap.h"
#include "Tank1.h"
#include "explode.h"
#include "directsound.h"
#include <afxtempl.h>
#include "Egg.h"

#include "Midi.h"

class CBullet;
class CGame  
{
public:
	//objects
	CList<CBullet *,CBullet *> m_BulletList;
	CList<CTank *,CTank *>m_Player;
    CList<CTank *,CTank *>m_Enemy;
    CList<CExplode *,CExplode *>m_Explode;
	CList<CEgg *,CEgg *>m_Egg;

	CTank*	m_tankleft;
	CTank*	m_tankright;
	
	//surfaces
	LPDIRECTDRAWSURFACE     m_pEggBuffer;
	LPDIRECTDRAWSURFACE     m_pBulletBuffer;
	LPDIRECTDRAWSURFACE     m_pExplodeBuffer;
	LPDIRECTDRAWSURFACE     m_pTankAppBuffer;
	LPDIRECTDRAWSURFACE     m_pPlayerBuffer;
	LPDIRECTDRAWSURFACE     m_pTankStateBuffer;
	LPDIRECTDRAWSURFACE     m_pEnemyBuffer;
	LPDIRECTDRAWSURFACE     m_pBeginBuffer;
	LPDIRECTDRAWSURFACE     m_pMenuBuffer;
	LPDIRECTDRAWSURFACE     m_pLevelBuffer;//专用于报关画面
	LPDIRECTDRAWSURFACE     m_pBackGroundBuffer;

	//Sounds
	CDirectSound m_wavBang;
	CDirectSound m_wavDie;
	CDirectSound m_wavShoot;
	CDirectSound m_wavEgg;
	//单双人标志变量
	BOOL m_bSinglePlayer;
	int m_nLeftPlayer;
	int m_nRightPlayer;

	int m_nLeftKills;
	int m_nRightKills;
	int m_nLeftScore;
	int m_nRightScore;

	int m_nEnemyCount;			//当前关敌人总数
	int m_nLeftEnemy;			//当前关没有出现的坦克数
	int m_nGameLevel;

	//游戏状态标志位
	int m_nMenuPos ;                  //1-4 分别对应四个选项

	int m_nBorderTime;                //指定改变老盖时间 
	int m_nFreezeTime;               //指定敌人坦克是否被定时以及定时时间
	BOOL m_bFreeze;                  //标定player是否被定时
	CMIDI	m_midiBKMusic;			//背景音乐
public:
	BOOL DrawSelectMenu();
	void DrawPause();
	void DrawWin();
	void DrawLevel(int level);
	bool m_bLeftBring;			//左边正在产生坦克
	bool m_bRightBring;

	void DrawBegin();
	void DestroyObjectForNewLevel();
	BOOL TankInRect(CRect& rc);
	void BringTank(int pos=1);
	BOOL StartGame(int level);
	void DestroyObject();
	BOOL Init(HWND hWnd);
	void UpdateScreen();
	void PlaySound(int sort=0);
	void Run();

	void OutputText( int x, int y, LPCTSTR string,COLORREF rgb,CFont * font );
	void DrawWorldMap();
	void DrawWait(int n);
	void DrawGameOver();
	void DDClear( RECT* prc, DWORD dwFillColor );
	HRESULT DDReLoadBitmap(LPDIRECTDRAWSURFACE pdds,int id);
	HRESULT DDReLoadBitmap(LPDIRECTDRAWSURFACE pdds, LPCSTR szBitmap);
	void ResetSurface();
	void FlipScreen();
	void SetWndRect(RECT &rc);
	BOOL GameInit();

	DWORD DDColorMatch(LPDIRECTDRAWSURFACE pdds, COLORREF rgb);
	HRESULT DDSetColorKey(LPDIRECTDRAWSURFACE pdds, COLORREF rgb);
	void DDDestroy();
	HRESULT DDCopyBitmap( LPDIRECTDRAWSURFACE pdds, HBITMAP hbm, int x, int y, int dx, int dy);
	LPDIRECTDRAWSURFACE DDLoadBitmap(int id,int dx=0,int dy=0);
	LPDIRECTDRAWSURFACE DDLoadBitmap( LPCSTR szBitmap, int dx=0, int dy=0);
	BOOL LoadBitmaps();
	LPDIRECTDRAWSURFACE DDCreateSurface( int width, int height );
	BOOL DDinit(HWND hWnd);

	GameState GetGameState()const{return m_nGameState;}
	void SetGameState(GameState state){m_nGameState=state;}

	CGame();
	virtual ~CGame();

	CTankMap m_TankMap;
	HWND m_hWnd;
	CRect m_rcGeneral;
private:
	RECT m_rcWnd;
	GameState m_nGameState;
	
	LPDIRECTDRAW			m_pDD;
	LPDIRECTDRAWSURFACE		m_pddsFrontBuffer;
	LPDIRECTDRAWSURFACE		m_pddsBackBuffer;
	LPDIRECTDRAWCLIPPER		pcClipper;

	LPDIRECTDRAWSURFACE     m_pGeneralBuffer; 
	LPDIRECTDRAWSURFACE     m_pWaitBuffer; 
	LPDIRECTDRAWSURFACE		m_pGameOverBuffer;

};

#endif // !defined(AFX_GAME_H__57350DA2_B866_449D_9135_643C2C305326__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -