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

📄 game.cpp

📁 游戏是我在3月5日离职后花3周时间做的。主要目的是验证自己在游戏上相关的编程能力
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			m_player.CitySoldier[m_bulwark] = m_player.CitySoldier[m_bulwark] - AC_Soldier2;
			SetCitySoldier(m_bulwark,m_player.CitySoldier[m_bulwark]);
			m_player1->CitySoldier[m_attack] = m_player1->CitySoldier[m_attack] - AC_Soldier1;
			Data[0] = m_attack;
			Data[1] = m_player1->CitySoldier[m_attack];
			Data[2] = -1;
			S_LoadSend(C_Soldier, Data);     /////兵完备

			if(m_player1->C_JLF[m_attack][1].Codify != -1)
			{
				WuLi = m_player1->C_JLF[m_attack][1].WuLi;
				m_player1->C_JLF[m_attack][1].HP = m_player1->C_JLF[m_attack][1].HP - 20;
				Data[0] = m_attack;
				Data[1] = 1;
				Data[2] = m_player1->C_JLF[m_attack][1].HP;
				S_LoadSend(C_CityJLFHP,Data);
			}
			else 
				WuLi = 0;
			if(m_player.C_JLF[m_bulwark][1].Codify !=-1)
			{
				WuLi = WuLi - m_player.C_JLF[m_bulwark][1].WuLi;
				m_player.C_JLF[m_bulwark][1].HP = m_player.C_JLF[m_bulwark][1].HP - 20;
				SetJLFCityHP(m_bulwark,1,&m_player.C_JLF[m_bulwark][1]);   /////本机需要通知
			}

            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_bulwark][0].Codify != -1)
				{
			    	m_player.C_JLF[m_bulwark][0].HP = m_player.C_JLF[m_bulwark][0].HP - AC_HP;
		    		SetJLFCityHP(m_bulwark,0,&m_player.C_JLF[m_bulwark][0]);   /////本机需要通知
				}
				if(m_player.C_JLF[m_bulwark][1].Codify != -1)
				{
					m_player.C_JLF[m_bulwark][1].HP = m_player.C_JLF[m_bulwark][1].HP - AC_HP;
		     		SetJLFCityHP(m_bulwark,1,&m_player.C_JLF[m_bulwark][1]);   /////本机需要通知
				}
				if(m_player.C_JLF[m_bulwark][2].Codify != -1)
				{
					m_player.C_JLF[m_bulwark][2].HP = m_player.C_JLF[m_bulwark][2].HP - AC_HP;
		    		SetJLFCityHP(m_bulwark,2,&m_player.C_JLF[m_bulwark][2]);   /////本机需要通知
				}
				if(m_player.C_JLF[m_bulwark][3].Codify != -1)
				{
					m_player.C_JLF[m_bulwark][3].HP = m_player.C_JLF[m_bulwark][3].HP - AC_HP;
		    		SetJLFCityHP(m_bulwark,3,&m_player.C_JLF[m_bulwark][3]);   /////本机需要通知
				}
			}
			else 
			{
		    	if(m_player1->C_JLF[m_attack][0].Codify != -1)
				{
			    	m_player1->C_JLF[m_attack][0].HP = m_player1->C_JLF[m_attack][0].HP + AC_HP;
					Data[0] = m_attack;
					Data[1] = 0;
					Data[2] = m_player1->C_JLF[m_attack][0].HP;
					S_LoadSend(C_CityJLFHP,Data);
				}
				if(m_player1->C_JLF[m_attack][1].Codify != -1)
				{
					m_player1->C_JLF[m_attack][1].HP = m_player1->C_JLF[m_attack][1].HP + AC_HP;
					Data[0] = m_attack;
					Data[1] = 1;
					Data[2] = m_player1->C_JLF[m_attack][1].HP;
					S_LoadSend(C_CityJLFHP,Data);
				}
				if(m_player1->C_JLF[m_attack][2].Codify != -1)
				{
					m_player1->C_JLF[m_attack][2].HP = m_player1->C_JLF[m_attack][2].HP + AC_HP;
					Data[0] = m_attack;
					Data[1] = 2;
					Data[2] = m_player1->C_JLF[m_attack][2].HP;
					S_LoadSend(C_CityJLFHP,Data);
				}
				if(m_player1->C_JLF[m_attack][3].Codify != -1)
				{
					m_player1->C_JLF[m_attack][3].HP = m_player1->C_JLF[m_attack][3].HP + AC_HP;
					Data[0] = m_bulwark;
					Data[1] = 3;
					Data[2] = m_player1->C_JLF[m_attack][3].HP;
					S_LoadSend(C_CityJLFHP,Data);
				}
			}
			if(m_player.CitySoldier[m_bulwark] <= 0)
			{
				OccupationCity(m_bulwark, 1, 2);
			}
			if(m_player1->CitySoldier[m_attack] <=0)
			{
				OccupationCity(m_attack, 2, 1);
			}
		}  ///////2
	}
	return 1;
}

void Game::OccupationCity(int City, int Possess, int AB)
{
	int Data[10];
	int i =0;
	for(i =0 ; i< 10; i++)
		Data[i] = -1;
	if(AB == 1) ////表示攻击方兵力为0
	{
		if(Possess == 1)  ///主机完蛋
		{
			m_player.CityPossess[City] = -1;
			m_WP.CityPossess[City] = -1;
			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;
			Data[0] = City;
			Data[1] = -1;
            S_LoadSend(C_CityPossess,Data);
			SetCitySoldier(City, 0);
		}
		else if(Possess == 2)
		{
			m_player1->CityPossess[City] = -1;
			m_WP.CityPossess[City] = -1;
			m_player1->C_JLF[City][0].Codify = -1;
			m_player1->C_JLF[City][1].Codify = -1;
			m_player1->C_JLF[City][2].Codify = -1;
			m_player1->C_JLF[City][3].Codify = -1;
			Data[0] = City;
			Data[1] = -1;
            S_LoadSend(C_CityPossess,Data);
		}
	}
	else if(AB == 2)   //////守方兵力为0
	{
		if(Possess == 1)
		{
			m_player.CityPossess[City] = -1;
			m_player1->CityPossess[City] = 1;
			m_WP.CityPossess[City] = 2;
			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;
			Data[0] = City;
			Data[1] = 2;
            S_LoadSend(C_CityPossess,Data);
			m_player1->CitySoldier[City] = 2500;
			Data[0] = City;
			Data[1] = 2500;
			S_LoadSend(C_Soldier,Data);
			SetCitySoldier(City, 0);
		}
		else if(Possess == 2)
		{
			m_player.CityPossess[City] = 1;
			m_player1->CityPossess[City] = -1;
			m_WP.CityPossess[City] = 1;
			m_player1->C_JLF[City][0].Codify = -1;
			m_player1->C_JLF[City][1].Codify = -1;
			m_player1->C_JLF[City][2].Codify = -1;
			m_player1->C_JLF[City][3].Codify = -1;
			Data[0] = City;
			Data[1] = 1;
			S_LoadSend(C_CityPossess,Data);  ///不用通知兵力
			SetCitySoldier(City, 2500);
			SetGameTimer(City);
		}
	}
}

int Game::GetConscripy(int City)
{
	int ZZSoldier =0 ,ZZR = 0;
	if(m_WP.CityPossess[City] == 1)
	{
		if(m_player.C_JLF[City][3].Codify != -1)
		{
			if(m_player.C_JLF[City][3].ZhengZhi >=80 && m_player.C_JLF[City][3].ZhengZhi <90)
				ZZR = 5;
			else if(m_player.C_JLF[City][3].ZhengZhi >=90 && m_player.C_JLF[City][3].ZhengZhi <95)
				ZZR = 6;
			else if(m_player.C_JLF[City][3].ZhengZhi >=95 && m_player.C_JLF[City][3].ZhengZhi <100)
				ZZR = 7;
			else if(m_player.C_JLF[City][3].ZhengZhi >=100)
				ZZR = 8;
			else 
				ZZR = 4;
			ZZSoldier = (rand()*m_player.C_JLF[City][3].ZhengZhi/65535)*ZZR+500;  //主机
			m_player.C_JLF[City][3].HP = m_player.C_JLF[City][3].HP - 20;
		//	
			return ZZSoldier;
		}
		else
			return 550;
	}
	else if(m_WP.CityPossess[City] == 2)
	{
		if(m_player1->C_JLF[City][3].Codify != -1)
		{
			if(m_player1->C_JLF[City][3].ZhengZhi >=80 && m_player1->C_JLF[City][3].ZhengZhi <90)
				ZZR = 5;
			else if(m_player1->C_JLF[City][3].ZhengZhi >=90 && m_player1->C_JLF[City][3].ZhengZhi <95)
				ZZR = 6;
			else if(m_player1->C_JLF[City][3].ZhengZhi >=95 && m_player1->C_JLF[City][3].ZhengZhi <100)
				ZZR = 7;
			else if(m_player1->C_JLF[City][3].ZhengZhi >=100)
				ZZR = 8;
			else 
				ZZR = 4;
			ZZSoldier = (rand()*m_player1->C_JLF[City][3].ZhengZhi/65535)*ZZR+500;  //主机
			m_player1->C_JLF[City][3].HP =  m_player1->C_JLF[City][3].HP - 20;
			return ZZSoldier;
		}
		else 
			return 550;
	}
	return 0;
}

void Game::SetJLFCityHP(int City, int function, JLF *m_JLF)
{
	if(m_JLF->HP <= 0)
	{
		SetCityJLF(City,function,NULL);
    	int i, Data[10];
    	for(i = 0; i< 10 ; i++)
     		Data[i] = -1;

         	Data[0] = City;
            Data[1] = function;
		if(m_WP.CityPossess[City] == 1)
        	S_LoadSend(CT_JLFDeath, Data);  ///发出显示标致
		else if(m_WP.CityPossess[City] == 2)
			C_LoadSend(CT_JLFDeath, Data);

    	ShowText(TShow1,City,function);  ///本机显示标志
	}
	else 
		SetCityJLF(City,function,m_JLF);
}

void Game::SetGameTimer(int m_TimeID)
{
	m_WP.TimeCity[m_TimeID] = 1;
	sprintf(m_map.TT_CityCarryOut[m_TimeID],"%s","*");
}

int Game::GetGameTimer(int City, int m_Time)
{
	int TT;
	m_WP.TimeCity[City] = 0;
	memset(m_map.TT_CityCarryOut[City],0,5);
	if(m_player.C_JLF[City][2].Codify != -1)
	{
		TT = m_Time / 3;
		TT = TT /100 * m_player.C_JLF[City][2].ZhiLi;
		if(m_player.C_JLF[City][2].ZhiLi >=80 && m_player.C_JLF[City][2].ZhiLi <90)
			TT = TT /10 *7;
		else if(m_player.C_JLF[City][2].ZhiLi >=90 && m_player.C_JLF[City][2].ZhiLi <95)
			TT = TT /10 *8;
		else if(m_player.C_JLF[City][2].ZhiLi >=95 && m_player.C_JLF[City][2].ZhiLi <100)
			TT = TT /10 *9;
		else if(m_player.C_JLF[City][2].ZhiLi >=100)
		    TT = TT /10 *10;
		else
			TT = TT /10 *6;
		m_Time = m_Time - TT;
	}
return m_Time;
}

int Game::GetSwap(int City, int aim)
{
	int aimSoldier = 0;
	int Data[10];
	int i =0;
	for(i = 0; i< 10; i++)
		Data[i] = -1;
	if(m_WP.CityPossess[City] == 1)
	{
		if(m_player.CitySoldier[City] >1000)
		{
        	aimSoldier = m_player.CitySoldier[City] - m_player.CitySoldier[aim];
        	if(aimSoldier >0)
        		aimSoldier = aimSoldier/2 +1000;
        	else if(aimSoldier == 0)
        		aimSoldier = 1000;
        	else if(aimSoldier < 0)
        		aimSoldier = 500;
     		m_player.CitySoldier[aim] = m_player.CitySoldier[aim] + aimSoldier;
    		m_player.CitySoldier[City] = m_player.CitySoldier[City] - aimSoldier;
	    	SetCitySoldier(aim, m_player.CitySoldier[aim]);
	    	SetCitySoldier(City, m_player.CitySoldier[City]);
		}
	}
	else if(m_WP.CityPossess[City] == 2)
	{
		if(m_player1->CitySoldier[City] >1000)
		{
			aimSoldier = m_player1->CitySoldier[City] - m_player1->CitySoldier[aim];
        	if(aimSoldier >0)
        		aimSoldier = aimSoldier/2 +1000;
        	else if(aimSoldier == 0)
        		aimSoldier = 1000;
        	else if(aimSoldier < 0)
        		aimSoldier = 500;
     		m_player1->CitySoldier[aim] = m_player1->CitySoldier[aim] + aimSoldier;
    		m_player1->CitySoldier[City] = m_player1->CitySoldier[City] - aimSoldier;
			Data[0] = City;
			Data[1] = m_player1->CitySoldier[City];
			S_LoadSend(C_Soldier, Data);
			Data[0] = aim;
			Data[1] = m_player1->CitySoldier[aim];
			S_LoadSend(C_Soldier, Data);
		}
	}
	return 1;
}

void Game::GRecoveryHP()
{
	int SHP = 0, i=0;
	for(i = 0; i < 10; i++)
	{
		if(m_player.W_JLF[i].Codify != -1)
		{
			if(m_player.W_JLF[i].HP < m_player.W_JLF[i].HPS)
			{
				SHP = m_player.W_JLF[i].HPS - m_player.W_JLF[i].HP;
				SHP = SHP - m_player.W_JLF[i].HPS/10;
				if(SHP <= 0)
					m_player.W_JLF[i].HP = m_player.W_JLF[i].HPS;
				else
					m_player.W_JLF[i].HP = m_player.W_JLF[i].HPS - SHP;
			}
		}
	}
}

void Game::Victory()
{
	int i ,SC_Possess = 0;
   	for(i = 0; i< 10; i++)
	{
    	if(m_WP.CityPossess[i] == 1)
		{
			SC_Possess = SC_Possess +1;
		}
		else if(m_WP.CityPossess[i] == 2)
		{
			SC_Possess = SC_Possess +100;
		}
		if(SC_Possess == 10)
		{
			i_gamework = GAMEEND;
			if(m_player.SC == 1)
				MessageBox(NULL,"你已经赢了","胜利",0);
			else if(m_player.SC == 2)
				MessageBox(NULL,"可惜,你战败了","失败",0);
            DestroyWindow(hWnd); 
		}
		else if(SC_Possess == 1000)
		{
			i_gamework = GAMEEND;
			if(m_player.SC == 1)
				MessageBox(NULL,"可惜,你战败了","失败",0);	
			else if(m_player.SC == 2)
	    		MessageBox(NULL,"你已经赢了","胜利",0);
            DestroyWindow(hWnd); 
		}
	}
}

void Game::ShowText(int Type, int Data1, int Data2)
{
	if(m_map.TT_Show.size() == 10)
	{
		m_map.TT_Show.pop_front();
	}
	if(Type == TShow2)
	{
		if(m_player.CityPossess[Data1] == 1)
		{
	    	sprintf(T_Show.Text,"本城:%s兵力损失=%d",m_WP.CCityT[Data1],Data2);
	    	T_Show.i_Show = 1;
	    	m_map.TT_Show.push_back(T_Show);
		}
    	else 
		{
     		sprintf(T_Show.Text,"敌城:%s损失兵力=%d",m_WP.CCityT[Data1],Data2);
    		T_Show.i_Show = 2;
    		m_map.TT_Show.push_back(T_Show);
		}
	}
	else if(Type == TShow1)
	{
		TCHAR CT[10];
		if(Data2 == 0)
			sprintf(CT,"%s","太守");
		else if(Data2 == 1)
			sprintf(CT,"%s","武将");
		else if(Data2 == 2)
			sprintf(CT,"%s","参军");
		else if(Data2 == 3)
			sprintf(CT,"%s","侍中");
		if(m_player.CityPossess[Data1] == 1)
		{
			sprintf(T_Show.Text,"本城:%s(%s)阵亡",m_WP.CCityT[Data1],CT);
			T_Show.i_Show = 1;
			m_map.TT_Show.push_back(T_Show);
		}
		else
		{
			sprintf(T_Show.Text,"敌城:%s(%s)阵亡",m_WP.CCityT[Data1],CT);
			T_Show.i_Show = 2;
			m_map.TT_Show.push_back(T_Show);
		}	
	}
}	

⌨️ 快捷键说明

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