📄 game.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 + -