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