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

📄 game.h

📁 一个斗地主的小程序。。。。。。。。。。多多指教
💻 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 + -