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

📄 game.cpp

📁 游戏是我在3月5日离职后花3周时间做的。主要目的是验证自己在游戏上相关的编程能力
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		{
			////显示人员已满
		}
   		S_Timer = GetGameTimer(m_player.CCityI,TimeEnrol);
       	::SetTimer(hWnd,m_player.CCityI,S_Timer,0);
	}
	else if(Choice == CAbsolve0)
	{
		if(m_player.C_JLF[m_player.CCityI][Wint].Codify != -1)
		{
			for(i=0; i< 10 ; i++)
			{
				if(m_player.W_JLF[i].Codify == -1)
				{
					m_player.W_JLF[i].Codify = m_player.C_JLF[m_player.CCityI][Wint].Codify;
					m_player.W_JLF[i].Country1 = m_player.C_JLF[m_player.CCityI][Wint].Country1;
					m_player.W_JLF[i].Country2 = m_player.C_JLF[m_player.CCityI][Wint].Country2;
					m_player.W_JLF[i].HP = m_player.C_JLF[m_player.CCityI][Wint].HP;
					m_player.W_JLF[i].HPS = m_player.C_JLF[m_player.CCityI][Wint].HPS;
					strcpy(m_player.W_JLF[i].Name,m_player.C_JLF[m_player.CCityI][Wint].Name);
					m_player.W_JLF[i].TongLing = m_player.C_JLF[m_player.CCityI][Wint].TongLing;
					m_player.W_JLF[i].WuLi = m_player.C_JLF[m_player.CCityI][Wint].WuLi;
					m_player.W_JLF[i].ZhengZhi = m_player.C_JLF[m_player.CCityI][Wint].ZhengZhi;
					m_player.W_JLF[i].ZhiLi = m_player.C_JLF[m_player.CCityI][Wint].ZhiLi;

					SetCityJLF(m_player.CCityI,Wint,NULL);
					Data[0] = m_player.CCityI;
					Data[1] = Wint;
					C_LoadSend(S_Absolve,Data);
            		S_Timer = GetGameTimer(m_player.CCityI,TimeAbsolve);
            		::SetTimer(hWnd,m_player.CCityI,S_Timer,0);
					break;
				}
			}
		}
	}
}

BOOL Game::C_LoadSend(TCHAR *Command, int *Data)
{
	TCHAR SCommand[100];
	TCHAR CZero[9];
	int i =0;
   	memset(SCommand,0,100);
	if(strcmp(Command,GameCountry) == 0)
	{
       sprintf(SCommand,"%s=%d|",GameCountry,*Data);  ////本消息到服务器上将由
       SendMessage(hWnd,CLIECT_MSG_SEND,(WPARAM)SCommand,NULL);  ///发出Cliect消息,告知是哪个国家
	   return TRUE;
	}
	sprintf(SCommand,"%s=",Command);
	for(i = 0; i< 10 ; i++)
	{
		sprintf(CZero,"%d",*Data);
		strcat(SCommand,CZero);
		++ Data;
		if(*Data == -1)
		{
			strcat(SCommand,"|");
			break;
		}
		else 
			strcat(SCommand,"*");
	}
    SendMessage(hWnd,CLIECT_MSG_SEND,(WPARAM)SCommand,NULL);  ///发出Cliect消息,告知是哪个国家
	return TRUE;
}

BOOL Game::S_LoadSend(TCHAR *Command, int *Data)
{
	TCHAR SCommand[100];
	TCHAR CZero[9];
	int i = 0;
	memset(SCommand,0,100);
	sprintf(SCommand,"%s=",Command);
	for(i = 0; i< 10 ; i++)
	{
		sprintf(CZero,"%d",*Data);
		strcat(SCommand,CZero);
		++ Data;
		if(*Data == -1)
		{
			strcat(SCommand,"|");
			break;
		}
		else 
			strcat(SCommand,"*");
	}
    SendMessage(hWnd,SERVER_MSG_SEND,(WPARAM)SCommand,NULL);  ///发出Server消息,告知是哪个国家
	return TRUE;
}

void Game::SetCitySoldier(int City, int Soldier)
{
	if(m_player.CityPossess[City] != -1)
	{
        m_player.CitySoldier[City] = Soldier;
    	sprintf(m_map.TT_CitySoldier[City],"兵力:%d",Soldier);
	}
	else
	{
		m_player.CitySoldier[City] = 0;
		memset(m_map.TT_CitySoldier[City],0,50);
	}
}

void Game::SetCityJLF(int City, int function, JLF *m_JLF)
{
	int Data[10];
	int i;
	for(i = 0; i<10; i++)
		Data[i] = -1;
	if(m_player.CityPossess[City] == -1)
	{
		memset(m_map.TT_CityGeneral[City],0,50);
		memset(m_map.TT_CityFighter[City],0,50);
		memset(m_map.TT_CityStaff[City],0,50);
		memset(m_map.TT_CityPolitician[City],0,50);
		m_player.C_JLF[City][0].Codify = -1;
		m_player.C_JLF[City][1].Codify = -1;
		m_player.C_JLF[City][2].Codify = -1;
		m_player.C_JLF[City][3].Codify = -1;
		return ;
	}
	if(m_JLF == NULL)
	{
		m_player.C_JLF[City][function].Codify = -1;
		if(function == 0)
			memset(m_map.TT_CityGeneral[City],0,50);
		else if(function == 1)
			memset(m_map.TT_CityFighter[City],0,50);
		else if(function == 2)
			memset(m_map.TT_CityStaff[City],0,50);
		else if(function == 3)
			memset(m_map.TT_CityPolitician[City],0,50);
		return ;
	}
	if(m_JLF->Codify == -1)
		return ;
   	m_player.C_JLF[City][function].Codify   = m_JLF->Codify;
   	m_player.C_JLF[City][function].Country1 = m_JLF->Country1;
  	m_player.C_JLF[City][function].Country2 = m_JLF->Country2;
  	m_player.C_JLF[City][function].HP       = m_JLF->HP;
   	m_player.C_JLF[City][function].HPS      = m_JLF->HPS;
   	strcpy(m_player.C_JLF[City][function].Name, m_JLF->Name);
   	m_player.C_JLF[City][function].TongLing = m_JLF->TongLing;
   	m_player.C_JLF[City][function].WuLi     = m_JLF->WuLi;
   	m_player.C_JLF[City][function].ZhengZhi = m_JLF->ZhengZhi;
   	m_player.C_JLF[City][function].ZhiLi    = m_JLF->ZhiLi;

	if(function == 0)
	{
    	sprintf(m_map.TT_CityGeneral[City],
    		"太守:%s,%d,%d",
    		m_player.C_JLF[City][function].Name,
    		m_player.C_JLF[City][function].TongLing,
    		m_player.C_JLF[City][function].HP);
	}
	else if(function == 1)
	{
		sprintf(m_map.TT_CityFighter[City],
    		"将军:%s,%d,%d",
    		m_player.C_JLF[City][function].Name,
    		m_player.C_JLF[City][function].WuLi,
    		m_player.C_JLF[City][function].HP);
	}
	else if(function == 2)
	{
	   	sprintf(m_map.TT_CityStaff[City],
    		"参军:%s,%d,%d",
    		m_player.C_JLF[City][function].Name,
    		m_player.C_JLF[City][function].ZhiLi,
    		m_player.C_JLF[City][function].HP);
	}
	else if(function == 3)
	{
	   	sprintf(m_map.TT_CityPolitician[City],
    		"侍中:%s,%d,%d",
    		m_player.C_JLF[City][function].Name,
    		m_player.C_JLF[City][function].ZhengZhi,
    		m_player.C_JLF[City][function].HP);
	}
	if(m_player.SC == 2)
	{
		Data[0] = City;
        Data[1] = function;
		Data[2] = m_player.C_JLF[City][function].Codify;
		Data[3] = m_player.C_JLF[City][function].HP;
		C_LoadSend(S_Appoint,Data);
	}
}

int Game::AttackAalculate(int m_attack, int m_bulwark)
{
	int Data[10];
	int i;
	for(i = 0; i< 10; i++)
		Data[i] = -1;
	if(m_WP.CityPossess[m_bulwark] == -1)
	{
    	if(m_WP.CityPossess[m_attack] == 1)
		{
			if(m_player.CitySoldier[m_attack] >5000)
			{
	        	m_player.CitySoldier[m_attack]  = m_player.CitySoldier[m_attack] - 5000;  ///空城占领需要1000兵力
		        m_WP.CityPossess[m_bulwark]     = 1;  ////将空城设置为被主机占领
				m_player.CityPossess[m_bulwark] = 1; ///设置主机已占领此城市
				m_WP.m_JLF[m_bulwark] = m_JiangLing.GetJLF(USEJLF); //占领城市的将领表
				m_WP.m_JLFhead[m_bulwark] = m_WP.m_JLF[m_bulwark];
				Data[0] = m_bulwark;
				Data[1] = 1;
				S_LoadSend(C_CityPossess, Data);
				SetCitySoldier(m_bulwark,5000);
				SetCitySoldier(m_attack,m_player.CitySoldier[m_attack]);
				SetGameTimer(m_bulwark);  ////设置时间
			}
		}
		else if(m_WP.CityPossess[m_attack] == 2)
		{
			if(m_player1->CitySoldier[m_attack] > 5000)
			{
				m_player1->CitySoldier[m_attack] = m_player1->CitySoldier[m_attack] -5000;
				m_player1->CitySoldier[m_bulwark] = 5000;
		    	m_WP.CityPossess[m_bulwark] = 2;
				m_player1->CityPossess[m_bulwark] = 1;
				Data[0] = m_bulwark;
				Data[1] = 2;
				S_LoadSend(C_CityPossess, Data);
				Data[0] = m_bulwark;
				Data[1] = 5000;    
				S_LoadSend(C_Soldier, Data);  ///占领空城的兵力
				Data[0] = m_attack;
				Data[1] = m_player1->CitySoldier[m_attack];
				S_LoadSend(C_Soldier, Data);  ///主城损失
				m_WP.m_JLF[m_bulwark] = m_JiangLing.GetJLF(USEJLF);
				m_WP.m_JLFhead[m_bulwark] = m_WP.m_JLF[m_bulwark];
             	Data[0] = m_bulwark;
            	for(i = 1; i<(USEJLF+1); i++)
				{
             		Data[i] = m_WP.m_JLF[m_bulwark]->Codify;
             		++ m_WP.m_JLF[m_bulwark];
				}
             	m_WP.m_JLF[m_bulwark] = m_WP.m_JLFhead[m_bulwark];  ///还原头指针
				S_LoadSend(C_CityJLF, Data);
			}
		}
	}
	else if(m_WP.CityPossess[m_bulwark] != -1)
	{
		int TongLing = 0, AC_Soldier1 = 0, AC_Soldier2 = 0;
		int WuLi =0, AC_HP =0;
		if(m_WP.CityPossess[m_attack] == 1) ///表示由主发动攻击
		{
			if(m_player.C_JLF[m_attack][0].Codify != -1)
			{
     	    	TongLing = m_player.C_JLF[m_attack][0].TongLing;
				m_player.C_JLF[m_attack][0].HP = m_player.C_JLF[m_attack][0].HP - 20;
				SetJLFCityHP(m_attack,0,&m_player.C_JLF[m_attack][0]);
			}
			else 
				TongLing = 0;

			if(m_player1->C_JLF[m_bulwark][0].Codify !=-1)
			{
				TongLing = TongLing - m_player1->C_JLF[m_bulwark][0].TongLing;
				m_player1->C_JLF[m_bulwark][0].HP = m_player1->C_JLF[m_bulwark][0].HP -20;
				Data[0] = m_bulwark;
				Data[1] = 0;
				Data[2] = m_player1->C_JLF[m_bulwark][0].HP;
				S_LoadSend(C_CityJLFHP,Data);
			}
			AC_Soldier1 = m_player.CitySoldier[m_attack] / 10;
			if(AC_Soldier1 > 1000)
                AC_Soldier1 = 1000;
			AC_Soldier1 = AC_Soldier1+(rand()/(65535/35))*TongLing;

			Data[0] = m_bulwark;   /////守备方的损失兵力.
			Data[1] = AC_Soldier1;  ///攻击方的兵
			S_LoadSend(CT_AttackCity, Data);
			ShowText(TShow2, m_bulwark, AC_Soldier1);

 			AC_Soldier2 = m_player1->CitySoldier[m_bulwark] /10;
			if(AC_Soldier2 > 1000)
                AC_Soldier2 = 1000;
			AC_Soldier2 = AC_Soldier2-(rand()/(65535/35))*TongLing;

			Data[0] = m_attack;   /////攻击方的损失兵力.
			Data[1] = AC_Soldier2;  ///守备方的兵
			S_LoadSend(CT_AttackCity, Data);
			ShowText(TShow2, m_attack, AC_Soldier2);

			m_player.CitySoldier[m_attack] = m_player.CitySoldier[m_attack] - AC_Soldier2;
			SetCitySoldier(m_attack,m_player.CitySoldier[m_attack]);  ///设置主机兵力数据
			m_player1->CitySoldier[m_bulwark] = m_player1->CitySoldier[m_bulwark] - AC_Soldier1;
			Data[0] = m_bulwark;
			Data[1] = m_player1->CitySoldier[m_bulwark];
			Data[2] = -1;
			S_LoadSend(C_Soldier, Data);  ////////////兵完  //设置副机兵力数据

			if(m_player.C_JLF[m_attack][1].Codify != -1)
			{
				WuLi = m_player.C_JLF[m_attack][1].WuLi;
				m_player.C_JLF[m_attack][1].HP = m_player.C_JLF[m_attack][1].HP - 20;
				SetJLFCityHP(m_attack,1,&m_player.C_JLF[m_attack][1]);
			}
			else 
				WuLi = 0;
			if(m_player1->C_JLF[m_bulwark][1].Codify !=-1)
			{
				WuLi = WuLi - m_player1->C_JLF[m_bulwark][1].WuLi;
				m_player1->C_JLF[m_bulwark][1].HP = m_player1->C_JLF[m_bulwark][1].HP - 20;
				Data[0] = m_bulwark;
				Data[1] = 1;
				Data[2] = m_player1->C_JLF[m_bulwark][1].HP;
				S_LoadSend(C_CityJLFHP,Data);
			}
            AC_HP = WuLi * 2;
			if(AC_HP > 30)
				AC_HP = 30;
			else if(AC_HP <-30)
				AC_HP = -30;

			if(AC_HP < 0)
			{
		    	if(m_player.C_JLF[m_attack][0].Codify != -1)
				{
			    	m_player.C_JLF[m_attack][0].HP = m_player.C_JLF[m_attack][0].HP + AC_HP;
		    		SetJLFCityHP(m_attack,0,&m_player.C_JLF[m_attack][0]);
				}
				if(m_player.C_JLF[m_attack][1].Codify != -1)
				{
					m_player.C_JLF[m_attack][1].HP = m_player.C_JLF[m_attack][1].HP + AC_HP;
		    		SetJLFCityHP(m_attack,1,&m_player.C_JLF[m_attack][1]);
				}
				if(m_player.C_JLF[m_attack][2].Codify != -1)
				{
					m_player.C_JLF[m_attack][2].HP = m_player.C_JLF[m_attack][2].HP + AC_HP;
		    		SetJLFCityHP(m_attack,2,&m_player.C_JLF[m_attack][2]);
				}
				if(m_player.C_JLF[m_attack][3].Codify != -1)
				{
					m_player.C_JLF[m_attack][3].HP = m_player.C_JLF[m_attack][3].HP + AC_HP;
		    		SetJLFCityHP(m_attack,3,&m_player.C_JLF[m_attack][3]);
				}
			}
			else 
			{
		    	if(m_player1->C_JLF[m_bulwark][0].Codify != -1)
				{
			    	m_player1->C_JLF[m_bulwark][0].HP = m_player1->C_JLF[m_bulwark][0].HP - AC_HP;
					Data[0] = m_bulwark;
					Data[1] = 0;
					Data[2] = m_player1->C_JLF[m_bulwark][0].HP;
					S_LoadSend(C_CityJLFHP,Data);
				}
				if(m_player1->C_JLF[m_bulwark][1].Codify != -1)
				{
					m_player1->C_JLF[m_bulwark][1].HP = m_player1->C_JLF[m_bulwark][1].HP - AC_HP;
					Data[0] = m_bulwark;
					Data[1] = 1;
					Data[2] = m_player1->C_JLF[m_bulwark][1].HP;
					S_LoadSend(C_CityJLFHP,Data);
				}
				if(m_player1->C_JLF[m_bulwark][2].Codify != -1)
				{
					m_player1->C_JLF[m_bulwark][2].HP = m_player1->C_JLF[m_bulwark][2].HP - AC_HP;
					Data[0] = m_bulwark;
					Data[1] = 2;
					Data[2] = m_player1->C_JLF[m_bulwark][2].HP;
					S_LoadSend(C_CityJLFHP,Data);
				}
				if(m_player1->C_JLF[m_bulwark][3].Codify != -1)
				{
					m_player1->C_JLF[m_bulwark][3].HP = m_player1->C_JLF[m_bulwark][3].HP - AC_HP;
					Data[0] = m_bulwark;
					Data[1] = 3;
					Data[2] = m_player1->C_JLF[m_bulwark][3].HP;
					S_LoadSend(C_CityJLFHP,Data);
				}
			}
			///////////////////////////////////结束判定
			if(m_player.CitySoldier[m_attack] <= 0)
			{
				OccupationCity(m_attack, 1, 1);
			}
			if(m_player1->CitySoldier[m_bulwark] <=0)
			{
				OccupationCity(m_bulwark, 2, 2);
			}
		}
		else if(m_WP.CityPossess[m_attack] == 2)
		{
			if(m_player1->C_JLF[m_attack][0].Codify != -1)
			{
     	    	TongLing = m_player1->C_JLF[m_attack][0].TongLing;
				m_player1->C_JLF[m_attack][0].HP = m_player1->C_JLF[m_attack][0].HP - 20;
				Data[0] = m_attack;
				Data[1] = 0;
				Data[2] = m_player1->C_JLF[m_attack][0].HP;
				S_LoadSend(C_CityJLFHP,Data);
			}
			else 
				TongLing = 0;

			if(m_player.C_JLF[m_bulwark][0].Codify !=-1)
			{
				TongLing = TongLing - m_player.C_JLF[m_bulwark][0].TongLing;
				m_player.C_JLF[m_bulwark][0].HP = m_player.C_JLF[m_bulwark][0].HP -20;
				SetJLFCityHP(m_bulwark,0,&m_player.C_JLF[m_bulwark][0]);   /////本机需要通知
			}

			AC_Soldier1 = m_player.CitySoldier[m_bulwark] / 10;
			AC_Soldier1 = AC_Soldier1-(rand()/(65535/35))*TongLing;  //主机

			Data[0] = m_attack;   /////攻击方的损失兵力.
			Data[1] = AC_Soldier1;  ///守备方的兵
			S_LoadSend(CT_AttackCity, Data);
			ShowText(TShow2, m_attack, AC_Soldier1);

 			AC_Soldier2 = m_player1->CitySoldier[m_attack] /10;
			AC_Soldier2 = AC_Soldier2+(rand()/(65535/35))*TongLing;  ///副机

			Data[0] = m_bulwark;   /////攻击方的损失兵力.
			Data[1] = AC_Soldier2;  ///守备方的兵
			S_LoadSend(CT_AttackCity, Data);
			ShowText(TShow2, m_bulwark, AC_Soldier2);

⌨️ 快捷键说明

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