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

📄 game.cpp

📁 游戏是我在3月5日离职后花3周时间做的。主要目的是验证自己在游戏上相关的编程能力
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#include "game.h"

ID3DXFont *fontGame=NULL;
ID3DXFont *fontGameCCity=NULL;  //////城市文本指针
ID3DXFont *fontGameCS=NULL;   /////命令栏控制指针
ID3DXFont *fontGameChoice=NULL;  /////项目选择栏的文本指针
ID3DXFont *fontGameCityJLF = NULL; //城市数据显示文本 
/*LPDIRECT3DVERTEXBUFFER9 g_pVB;//顶点缓存的接口指针

struct CUSTOMVERTEX 
{ 
float x,y,z,rhw;//顶点坐标 
DWORD color;//顶点颜色 
};*/ 
//定义FVF,用到坐标和颜色 
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE) 

Game::~Game()
{

}
Game::Game()
{
	memset(m_player.CCityT,0,strlen(m_player.CCityT));
	m_player.CCityI = -1;
	m_player.Choice = -1;

    strcpy(m_WP.CCityT[0],City0);
    strcpy(m_WP.CCityT[1],City1);
	strcpy(m_WP.CCityT[2],City2);
    strcpy(m_WP.CCityT[3],City3);
    strcpy(m_WP.CCityT[4],City4);
	strcpy(m_WP.CCityT[5],City5);
    strcpy(m_WP.CCityT[6],City6);
	strcpy(m_WP.CCityT[7],City7);
	strcpy(m_WP.CCityT[8],City8);
	strcpy(m_WP.CCityT[9],City9);

	m_WP.CCityI[0] = City00;
	m_WP.CCityI[1] = City10;
	m_WP.CCityI[2] = City20;
	m_WP.CCityI[3] = City30;
	m_WP.CCityI[4] = City40;
	m_WP.CCityI[5] = City50;
	m_WP.CCityI[6] = City60;
	m_WP.CCityI[7] = City70;
	m_WP.CCityI[8] = City80;
	m_WP.CCityI[9] = City90;

	m_map.ChoiceBMP.top = 0;
	m_map.ChoiceBMP.left = 605;
	m_map.ChoiceBMP.right = 800;
	m_map.ChoiceBMP.bottom = 420;

for(int i=0; i<10; i++)
{
	m_map.Choice[i].top = 38+i*30;
	m_map.Choice[i].bottom = 48+i*30;
	m_map.Choice[i].left = 620;
	m_map.Choice[i].right = 770;

	m_WP.TimeCity[i] = 0;
	memset(m_map.T_Choice[i],0,50);
    m_WP.m_JLF[i] = NULL;
	m_WP.m_JLFhead[i] = NULL;
	memset(m_map.TT_CityFighter[i],0,50);
	memset(m_map.TT_CityGeneral[i],0,50);
	memset(m_map.TT_CityPolitician[i],0,50);
	memset(m_map.TT_CitySoldier[i],0,50);
	memset(m_map.TT_CityStaff[i],0,50);
	m_player.W_JLF[i].Codify = -1;  ///-1表示什么也没有
	m_player.C_JLF[i][0].Codify = -1;
	m_player.C_JLF[i][1].Codify = -1;
	m_player.C_JLF[i][2].Codify = -1;
	m_player.C_JLF[i][3].Codify = -1;
	m_player.CityPossess[i] = -1;
	m_player.CitySoldier[i] = -1;
	m_player.W_JLF[i].Codify = -1;
//////////////////////////////////////////////////////////////
	m_WP.CityPossess[i] = -1;
	m_map.T_Show[i].top = 210 + i*10;
	m_map.T_Show[i].bottom = 220 + i*10;
	m_map.T_Show[i].left = 20;
	m_map.T_Show[i].right = 250;
//	memset(m_map.TT_Show[i],0,50);
//	m_map.i_Show[i] = -1;
}
    BJ.top = 0;
	BJ.bottom = 640;
	BJ.left = 0;
	BJ.right = 800;

	rect_Fa.bottom = 500;
	rect_Fa.left = 490;
	rect_Fa.right = 810;
	rect_Fa.top = 200;

	rect_Su.bottom = 500;
	rect_Su.left = 50; 
	rect_Su.right = 350;
	rect_Su.top = 200;

	rect_Wu.bottom = 670;
	rect_Wu.left = 280;    ///-125
	rect_Wu.right = 580;
	rect_Wu.top = 370;  ///+125

	rect_Wei.bottom = 300;
	rect_Wei.left = 280;   ///+125
	rect_Wei.right = 580;
	rect_Wei.top = 20;

	for(i =0; i <5; i++)
	{
    	m_map.T_CitySoldier[i].top = 110;
    	m_map.T_CitySoldier[i].bottom =125;
		m_map.T_CitySoldier[i].left = 40 + 120*i -12;
		m_map.T_CitySoldier[i].right = 120 + 120*i + 5;

		m_map.T_CityGeneral[i].top =  90;
		m_map.T_CityGeneral[i].bottom = 105;
		m_map.T_CityGeneral[i].left = 40 +120*i -12;
		m_map.T_CityGeneral[i].right = 120 + 120*i +5;

		m_map.T_CityFighter[i].top = 70;
		m_map.T_CityFighter[i].bottom = 85;
		m_map.T_CityFighter[i].left = 40 +120*i -12;
		m_map.T_CityFighter[i].right = 120 + 120*i +5;

		m_map.T_CityStaff[i].top = 50;
		m_map.T_CityStaff[i].bottom = 65;
		m_map.T_CityStaff[i].left = 40 +120*i -12;
		m_map.T_CityStaff[i].right = 120 + 120*i +5;

		m_map.T_CityPolitician[i].top = 30;
		m_map.T_CityPolitician[i].bottom = 45;
		m_map.T_CityPolitician[i].left = 40 +120*i -12;
		m_map.T_CityPolitician[i].right = 120 + 120*i +5;

		m_map.T_CityCarryOut[i].top = 130;
		m_map.T_CityCarryOut[i].bottom = 140;
		m_map.T_CityCarryOut[i].left = 40 + 120*i -10;
		m_map.T_CityCarryOut[i].right = 40 + 120*i; 

		m_map.T_CityName[i].top = 190;
		m_map.T_CityName[i].bottom = 205;
		m_map.T_CityName[i].left = 40+ 120*i;
		m_map.T_CityName[i].right = 120+ 120*i;
	}
	m_map.City[0].top = 130;
	m_map.City[0].bottom = 200;
	m_map.City[0].left = 40;
	m_map.City[0].right = 120;

	m_map.City[1].top = 130;
	m_map.City[1].bottom = 200;
	m_map.City[1].left = 160;
	m_map.City[1].right = 240;

	m_map.City[2].top = 130;
	m_map.City[2].bottom = 200;
	m_map.City[2].left = 280;
	m_map.City[2].right = 360;

	m_map.City[3].top = 130;
	m_map.City[3].bottom = 200;
	m_map.City[3].left = 400;
	m_map.City[3].right = 480;

	m_map.City[4].top = 130;
	m_map.City[4].bottom = 200;
	m_map.City[4].left = 520;
	m_map.City[4].right = 600;
	for(i =5; i <10; i++)
	{
    	m_map.T_CitySoldier[i].top = 495;
    	m_map.T_CitySoldier[i].bottom = 510;
		m_map.T_CitySoldier[i].left = 40 + 120*(i-5) -12;
		m_map.T_CitySoldier[i].right = 120 + 120*(i-5) +5;

		m_map.T_CityGeneral[i].top =  515;
		m_map.T_CityGeneral[i].bottom = 530;
		m_map.T_CityGeneral[i].left = 40 +120*(i-5) -12;
		m_map.T_CityGeneral[i].right = 120 + 120*(i-5) +5;

		m_map.T_CityFighter[i].top = 535;
		m_map.T_CityFighter[i].bottom = 550;
		m_map.T_CityFighter[i].left = 40 +120*(i-5) -12;
		m_map.T_CityFighter[i].right = 120 + 120*(i-5) +5;

		m_map.T_CityStaff[i].top = 555;
		m_map.T_CityStaff[i].bottom = 570;
		m_map.T_CityStaff[i].left = 40 +120*(i-5) -12;
		m_map.T_CityStaff[i].right = 120 + 120*(i-5) +5;

		m_map.T_CityPolitician[i].top = 575;
		m_map.T_CityPolitician[i].bottom = 590;
		m_map.T_CityPolitician[i].left = 40 +120*(i-5) -12;
		m_map.T_CityPolitician[i].right = 120 + 120*(i-5) +5;

		m_map.T_CityCarryOut[i].top = 420;
		m_map.T_CityCarryOut[i].bottom = 490;
		m_map.T_CityCarryOut[i].left = 40 + 120*(i-5) -10;
		m_map.T_CityCarryOut[i].right = 40 + 120*(i-5); 

		m_map.T_CityName[i].top = 480;
		m_map.T_CityName[i].bottom = 495;
		m_map.T_CityName[i].left = 40+ 120*(i-5);
		m_map.T_CityName[i].right = 120+ 120*(i-5);
	}

	m_map.City[5].top = 420;
	m_map.City[5].bottom = 490;
	m_map.City[5].left = 40;
	m_map.City[5].right = 120;

	m_map.City[6].top = 420;
	m_map.City[6].bottom = 490;
	m_map.City[6].left = 160;
	m_map.City[6].right = 240;

	m_map.City[7].top = 420;
	m_map.City[7].bottom = 490;
	m_map.City[7].left = 280;
	m_map.City[7].right = 360;

	m_map.City[8].top = 420;
	m_map.City[8].bottom = 490;
	m_map.City[8].left = 400;
	m_map.City[8].right = 480;

	m_map.City[9].top = 420;
	m_map.City[9].bottom = 490;
	m_map.City[9].left = 520;
	m_map.City[9].right = 600;

	m_map.TopMenu.top = 20;
	m_map.TopMenu.bottom = 400;
	m_map.TopMenu.left = 620;
	m_map.TopMenu.right = 780;

	m_map.TottomMenu.top = 420;
	m_map.TottomMenu.bottom = 620;
	m_map.TottomMenu.left = 620;
	m_map.TottomMenu.right = 780;

	m_map.Attack.top = 430;
	m_map.Attack.bottom = 460;
	m_map.Attack.left = 630;
	m_map.Attack.right = 695;

	m_map.Swap.top = 430;
	m_map.Swap.bottom = 460;
	m_map.Swap.left = 705;
	m_map.Swap.right = 770;

	m_map.Enrol.top = 470;
	m_map.Enrol.bottom = 500;
	m_map.Enrol.left = 630;
	m_map.Enrol.right = 695;
	
	m_map.Conscripy.top = 470;
	m_map.Conscripy.bottom = 500;
	m_map.Conscripy.left = 705;
	m_map.Conscripy.right = 770;

	m_map.Appoint.top = 510;
	m_map.Appoint.bottom = 540;
	m_map.Appoint.left = 630;
	m_map.Appoint.right = 695;

	m_map.Absolve.top = 510;
	m_map.Absolve.bottom = 540;
	m_map.Absolve.left = 705;
	m_map.Absolve.right = 770;

	m_map.T_CityC.top = 560;
	m_map.T_CityC.bottom = 590;
	m_map.T_CityC.left = 665;
	m_map.T_CityC.right = 730;
}

BOOL Game::C_AssayRecv(TCHAR *C_Msg_Recv)
{	
	if(strcmp(C_Msg_Recv, GameBegin) == 0)
	{
		i_gamework = GAMEBEGIN;
		m_player.SC = 2;  ///副Cliect
		PostMessage(hWnd,CLIECT_MSG_SEND,(WPARAM)GameBegin_ok,NULL);
		delete []C_Msg_Recv;
		return TRUE;
	}
	TCHAR command[30],cdata[8],*head = NULL,*tail = NULL;
	int Data[10];
	int i= 0;
	for(i=0;i<10;i++)
	  Data[i] = -1;
	memset(command,0,30);
	BOOL worktail = FALSE;

	head = C_Msg_Recv;
	tail = strstr(C_Msg_Recv,"=");  
	strncpy(command, head, tail-head); ///建立命令
	head = tail +1;
	for(i = 0; i<10; i++)
	{
		tail = strstr(head,"*");
		if(tail == NULL)
		{
			tail = strstr(head,"|");
			worktail = TRUE;
		}
		memset(cdata,0,8);
		strncpy(cdata, head, tail - head);
		Data[i] = atoi(cdata);
		head = tail +1;
		if(worktail == TRUE)
			break;
	}
		this->ExecutionWorking(command,Data);
		delete []C_Msg_Recv; ////命令是有new建立的,用完需要清楚
	return TRUE;
}

BOOL Game::S_AssayRecv(TCHAR *S_Msg_Recv)
{
	int i= 0;
	if(strcmp(S_Msg_Recv, GameBegin_ok) == 0)
	{
		i_gamework = GAMEBEGIN;  //游戏进入开始阶段
		m_player.SC = 1;  ////主Server
		//////////////////////////建立游戏界面。
		m_player1 = new Player;  /////对手玩家
		for(i = 0; i< 10 ;i++)
		{
          	m_player1->CityPossess[i] = -1;
         	m_player1->CitySoldier[i] = -1;
        	m_player1->W_JLF[i].Codify = -1;
        	m_player1->C_JLF[i][0].Codify = -1;
        	m_player1->C_JLF[i][1].Codify = -1;
        	m_player1->C_JLF[i][2].Codify = -1;
        	m_player1->C_JLF[i][3].Codify = -1;
    		m_player1->SC = 0;  ////副Cliect
    		m_player1->CounTry = GAMECOUNTRY;  ////暂时无国家
		}
		delete []S_Msg_Recv;
		return TRUE;
	}
	/////////////////////头命令
	TCHAR command[30],cdata[8],*head = NULL,*tail = NULL;
	int Data[10];
	int len = strlen(S_Msg_Recv);
	for(i=0;i<10;i++)
	   Data[i] = -1;
	memset(command,0,30);
	BOOL worktail = FALSE;

	head = S_Msg_Recv;
	tail = strstr(S_Msg_Recv,"=");  
	strncpy(command, head, tail-head); ///建立命令
	head = tail +1;
	for(i = 0; i<10; i++)
	{
		tail = strstr(head,"*");
		if(tail == NULL)
		{
			tail = strstr(head,"|");
			worktail = TRUE;
		}
		memset(cdata,0,8);
		strncpy(cdata, head, tail - head);
		Data[i] = atoi(cdata);
		head = tail +1;
		if(worktail == TRUE)
			break;
	}
		this->ExecutionWorking(command,Data);
		delete []S_Msg_Recv;////命令是有new建立的,用完需要清楚
	return TRUE;
}

BOOL Game::InitGame(HWND hwnd)
{
	hWnd = hwnd;
	i_gamework = GAMEINIT;   ////未开始
	m_player.CounTry = GAMECOUNTRY;  /////无国家
	m_player.SC = -1;   /////未确定SC
	return TRUE;
}

BOOL Game::InitD3D(LPDIRECT3DDEVICE8 &g_pD3DDevice)
{

LOGFONT lf;
ZeroMemory(&lf, sizeof(LOGFONT));
lf.lfHeight = 25; // in logical units
lf.lfWidth = 25; // in logical units
lf.lfWeight = 500; // boldness, range 0(light) - 1000(bold)
lf.lfItalic = FALSE;
lf.lfUnderline = FALSE;
lf.lfStrikeOut = FALSE;
lf.lfCharSet = DEFAULT_CHARSET;
strcpy(lf.lfFaceName, "Times New Roman"); // font style

D3DXCreateFontIndirect(g_pD3DDevice, &lf, &fontGame);

ZeroMemory(&lf, sizeof(LOGFONT));
lf.lfHeight = 16; // in logical units
lf.lfWidth = 11; // in logical units
lf.lfWeight = 400; // boldness, range 0(light) - 1000(bold)

D3DXCreateFontIndirect(g_pD3DDevice, &lf, &fontGameCCity);

ZeroMemory(&lf, sizeof(LOGFONT));
lf.lfHeight = 14; // in logical units
lf.lfWidth = 14; // in logical units
lf.lfWeight = 400; // boldness, range 0(light) - 1000(bold)

D3DXCreateFontIndirect(g_pD3DDevice, &lf, &fontGameCS);

ZeroMemory(&lf, sizeof(LOGFONT));
lf.lfHeight = 12; // in logical units
lf.lfWidth = 7; // in logical units
lf.lfWeight = 400; // boldness, range 0(light) - 1000(bold)

D3DXCreateFontIndirect(g_pD3DDevice, &lf, &fontGameChoice);

⌨️ 快捷键说明

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