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

📄 game.h

📁 超级坦克大战游戏
💻 H
字号:
#include <ddraw.h>
#include <stdlib.h>
#include <time.h>

#define MAXENEMY 20
#define WAITTIME 50
#define TANKLIFE 3

#define KEY_UP 1
#define KEY_DOWN 2
#define KEY_LEFT 4
#define KEY_RIGHT 8
#define KEY_FIRE 16
#define KEY_FORWARD 32
//#define KEY_BOTTONUP 33

#define ST_BORN 0
#define ST_READY 1
#define ST_FORWARD 2
#define ST_SLEEP 3
#define ST_WAKE 4
#define ST_DEAD 5
#define ST_DYING 6
#define ST_FIRE 10

#define MAPFILE "stank.map"
#define DATFILE "stank.dat"
#define BMPFILE "stank.bmp"

class CMap;
class CStank;
class CScreen;
class CGame;
class CTank;

class CBomb
{
public:
	CBomb();
	~CBomb();
	void SetXY(int,int);
	void SetDirection(int);
	void SetActive(bool);
	bool BeActive(void);
	void Go(void);
	void SetTank(CTank*);
	int Able(int);
private:
	int BombX,BombY;
	bool Active;
	int Direction;
	CTank *pTank;
	CGame *pGame;
	CScreen *pScreen;
};

class CMap
{
public:
	CMap();
	~CMap();
	bool LoadMap(char*);
	void SaveMap(char*);
	int GetNum(void);
	void GetSpt(int,unsigned char*);
	bool AddMap(int);
	bool DeleteMap(int);
	void NewMap(unsigned char*);
	void SetMap(int,unsigned char*);
private:
	int numMap;
	unsigned char *STankMap[60];
};

class CTank
{
public:
	CTank();
	~CTank();
	int GetLife(void);
	void SetLife(int);
	void AddTotal(int);
	int GetTotal(void);
	void Action(void);
	void SetDirection(int);
	void SetStatus(int);
	void SetBase(int);
	int GetX(void);
	int GetY(void);
	void SetPosition(int,int);
	void Settime(int);
	void SetAutotime(int);
	int GetDirection(void);
	int GetStatus(void);
	bool Able(int);
	void Auto(void);
	void SetToBeEnemy(bool);
	bool BeEnemy(void);
	CBomb* GetBomb(void);
	void ReSet(void);
	void SetTotal(int);
	
private:
	CBomb bomb;
	int Life,Total,Direction,base;
	int timer,autotimer;
	int TankX,TankY,OriX,OriY;
	int Status;
	CGame *pGame;
	CScreen *pScreen;
	unsigned char* pCurrMap;
	unsigned char* pImageMap;
	bool IsEnemy;
	int Power;
};

class CScreen
{
public:
	friend class CGame;
	void SetWnd(HWND);
	CScreen();
	~CScreen();
	HRESULT Flip(void);
	HRESULT RestoreDD(void);
	bool InitDirectDraw(void);
	void DeleteDirectDraw(void);
	bool ClearDDSurface(LPRECT,BYTE);
	bool Fail(char*);
	HRESULT PutSpt(int,int,int);
	bool BeReady(void);
	void SetReady(bool);
	void SetModify(bool);
	bool BeModified(void);

private:
	HWND hScreenWnd;
	RECT *pSpt;
	int numSpt;
	LPDIRECTDRAW lpDD;
	LPDIRECTDRAWSURFACE lpDDSPrimary,lpDDSBuffer,lpDDSBack;
	LPDIRECTDRAWPALETTE lpDDPalette;
	bool DDReady;
	PALETTEENTRY DefaultPE[256];
	bool Modified;
};

class CGame
{
public:
	CGame();
	~CGame();
	int OnKey(void);
	void OnTimer(void);
	void OnMenu(void);
	void OnMapEdit(void);
	void OnPlaying(void);
	void SetWnd(HWND);
	bool InitGame(void);
	unsigned char Keyboard1,Mouse2;
	bool KeyESC,keyENTER,KeyPGD,KeyPGU,KeyDel;
	void SetOccasion(int);
	void SetPoint(int,int);
	void SetMove(bool);
	void Click(int);
	void SetModify(bool);
	bool BeModified(void);
	void PutPannel(void);
	void PutPannel2(void);
	unsigned char* GetCurrMap(void);
	unsigned char* GetCurrImage(void);
	void GameOver(void);
	void Win(void);
	void ReduceEnemy(void);
	void AddTotal(int);

private:
	CTank *player1,*player2;
	CTank Enemy[MAXENEMY];
	CScreen *pScreen;
	HWND hGameWnd;
	int Occasion,finger,timer,timer2;
	int MenuItem;
	int MouseX,MouseY,MouseStyle,LClick,dx,dy,OldX,OldY;
	bool MouseMove;
	CMap *pMap;
	int Current;
	unsigned char CurrMap[1024],CurrImage[1024];
	RECT rectSelected;
	bool twoplayer,enemyBorn;
	int numEnemy,Appear,next;
	bool Complete;
};

CScreen* GetTheScreen();
CGame* GetTheGame();
CMap* GetTheMap();

⌨️ 快捷键说明

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