?? game.h
字號:
//主窗口句柄;
extern HWND hWnd;
class CMainFrame;
//主窗口類指針;設為全局變量便于各個類訪問其方法;
extern CMainFrame* pCMainFrame;
//關于Direct設備的類;
//DirectInput設備接口指針;
class CMyDirectInput;
extern CMyDirectInput* pInput;
//DirectDraw設備接口指針;
class CMyDirectDraw;
extern CMyDirectDraw* pDraw;
extern LPDIRECTDRAWSURFACE7 lpddsprimary; // 主表面;
extern LPDIRECTDRAWSURFACE7 lpddsback; //后緩沖表面;
extern LPDIRECTDRAWSURFACE7 lpddsbg_Game; //存放游戲界面的離屏表面;
//游戲主體框架類;
class CGame;
//class CSingle_Game;
extern CGame* pGame;
//一張撲克;
class CCard;
//所有的牌;
extern CCard g_cAllCards[54];
//存儲玩家信息的類;
class CPlayerInfo;
extern CPlayerInfo* pCenterPlayer;
extern CPlayerInfo* pLeftPlayer;
extern CPlayerInfo* pRightPlayer;
//撲克數據和算法類;
class CPlayingCards;
extern CPlayingCards* pLeftCards; //左邊玩家的牌對象;
extern CPlayingCards* pCenterCards; //主機玩家的牌對象;
extern CPlayingCards* pRightCards; //右邊玩家的牌對象;
//關于其他精靈的繪制引擎;
class CDrawItemEngine;
extern CDrawItemEngine* pDrawItem;
//關于撲克繪制的引擎;
class CDrawCardsEngine;
extern CDrawCardsEngine* pDrawCards;
//游戲牌面坐標系統;
class CCardsMap;
extern CCardsMap* pCardsMap;
//網絡設備;
class CLink;
extern CLink* pServerLink1; //連接客戶1;
extern CLink* pServerLink2; //連接客戶2;
extern CLink* pClientLink; //客戶端1;
//位置坐標;
extern int Screen_Width, Screen_Height; //屏幕長,寬;
extern int Cards_Width, Cards_Height; //撲克長寬;
//中間玩家未出的牌的起始位置;
extern int Center_x0, Center_y0;
//中間玩家已經出過的牌;
extern int Center_x1, Center_y1;
//中間玩家剛出的牌;
extern int Center_x2, Center_y2;
//左邊玩家未出的牌;
extern int Left_x0, Left_y0;
//左邊玩家已經出過的牌;
extern int Left_x1, Left_y1;
//左邊玩家剛出的牌;
extern int Left_x2, Left_y2;
//右邊玩家未出的牌;
extern int Right_x0, Right_y0;
//右邊玩家已經出過的牌;
extern int Right_x1, Right_y1;
//右邊玩家剛出的牌;
extern int Right_x2, Right_y2;
extern int Lord_Card1_x, Lord_Card1_y;
extern int Lord_Card2_x, Lord_Card2_y;
extern int Lord_Card3_x, Lord_Card3_y;
//發牌的起始位置;
extern int Card_x;
extern int Card_y;
//左,右玩家未出與已出牌的間距:
extern int Card_Distance0;
//中間玩家未出的牌的間距;
extern int Card_Distance1;
//剛出的牌的間距
extern int Card_Distance2;
//中間撲克選擇后突出的高度;
extern int Card_Up;
//游戲屏幕刷新函數;
//bSprimary參數表示是否將重畫顯示到主表面,默認是顯示到主表面;
int RedrawGame(BOOL bSprimary = 1);
class CPlayerInfo
{
public:
int m_nPlayerType; //0表示單人游戲,1表示服務器,2表示客戶端;
int m_nFaceID;
char m_szName[6];
int m_nScore; //得分;
int m_nWin; //勝;
int m_nLose; //負;
public:
CPlayerInfo();
};
enum Who_Is_Lord{ no_player = -1, left_player = 0, center_player = 1, right_player = 2 };
//游戲主體框架類;
class CGame
{
public:
//0代表左邊玩家(電腦)是地主;1代表中間(本機)玩家,2代表右邊玩家(電腦);
int m_nCurrentLord; //當前地主;
protected:
int m_nDefaultLord; //默認地主;
int m_nLordLock; //地主出牌鎖定,
//0表示左邊鎖定,1表示中間鎖定,2表示右邊鎖定,-1解開;
BOOL m_bButton; //延時鎖;
BOOL m_bOperate ; //是否允許用戶選擇牌;
int m_nRoundCounter; //計算一輪內出牌次數;
int m_nBombCounter; //計算炸彈個數;
int m_nGameCounter; //計算牌局數;
CRect m_cCardsRect; //未出牌區域;
CRect m_cCardsUpRect; //提前牌區域;
//注意:常量大寫,加前綴,可加下劃線;
const CRect m_cOK_RECT; //出牌按鈕;
const CRect m_cYES_RECT; //選擇是否當地主; 是;
const CRect m_cNO_RECT; //選擇是否當地主; 否;
const CRect m_cEXIT_RECT; //退出游戲;
protected:
void ShuffleCards();
void NewGame(); //開始新的牌局,洗牌;
int CompareCards(); //比較當前牌是否為合法;
void AccountScore(int player);
virtual int CenterDoing() = 0; //本機(中間)玩家的出牌處理;
virtual int LeftDoing() = 0; //左邊玩家(電腦)思考,并決定要出的牌;
virtual int RightDoing() = 0; //右邊玩家(電腦)思考,并決定要出的牌;
public:
CGame();
virtual ~CGame();
void Init(); //游戲初始化
int RefreshMyTurn(); //當輪到本機玩家出牌時的屏幕刷新函數;
//要被其他用戶調用,所以設為公有;
//刷新菜單控制整個游戲生命周期的線程函數;
static DWORD WINAPI RefreshMenu(LPVOID pParam);
virtual int Run() = 0; //整個游戲過程的中樞;
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -