📄 game.cpp
字号:
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 + -