📄 game.cpp
字号:
{
////显示人员已满
}
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 + -