📄 game.cpp
字号:
fontGameCityJLF->DrawText(
m_map.TT_CityGeneral[i],
-1, &m_map.T_CityGeneral[i],
DT_TOP| DT_LEFT,
COLORCityGeneral);//
fontGameCityJLF->DrawText(
m_map.TT_CityFighter[i],
-1, &m_map.T_CityFighter[i],
DT_TOP| DT_LEFT,
COLORCityFighter);//
fontGameCityJLF->DrawText(
m_map.TT_CityStaff[i],
-1, &m_map.T_CityStaff[i],
DT_TOP| DT_LEFT,
COLORCityStaff);//
fontGameCityJLF->DrawText(
m_map.TT_CityPolitician[i],
-1, &m_map.T_CityPolitician[i],
DT_TOP| DT_LEFT,
COLORCityPolitician);//
fontGameCS->DrawText(
m_map.TT_CityCarryOut[i],
-1, &m_map.T_CityCarryOut[i],
DT_TOP| DT_LEFT,
COLORCityCarryOut);//
}
i = 0;
for(m_map.c_TT_Show = m_map.TT_Show.begin(); m_map.c_TT_Show != m_map.TT_Show.end(); m_map.c_TT_Show ++)
{
if((*m_map.c_TT_Show).i_Show == 1)
fontGameChoice->DrawText(
(*m_map.c_TT_Show).Text,
-1, &m_map.T_Show[i],
DT_TOP| DT_LEFT,
COLORShowText0);
else if((*m_map.c_TT_Show).i_Show == 2)
fontGameChoice->DrawText(
(*m_map.c_TT_Show).Text,
-1, &m_map.T_Show[i],
DT_TOP| DT_LEFT,
COLORShowText1);
i++;
}
return TRUE;
}
BOOL Game::InitS_GameCourse()
{
int s = m_JiangLing.InitAllJiangLing(); ////初始武将
if(!m_JiangLing.RandArrange(s)) ////将将领随即排列
return FALSE;
int Data[10];
int i =0;
for(i = 0;i <10; i++)
Data[i] = -1;
Data[0] = 0;
S_LoadSend(C_GameCourse,Data); ///游戏开始
m_player.CityPossess[2] = 1; ///主机第二位为可用城市
m_player.CitySoldier[2] = 10000; ////初试兵力为10000
SetCitySoldier(2,10000);
SetGameTimer(2);
m_player.CCityI = 2; ////设置当前控制的城市编号
strcpy(m_player.CCityT,m_WP.CCityT[2]);///设置选择城市的文本
m_player1->CityPossess[7] = 1; /////副机第7位为可用城市
m_player1->CitySoldier[7] = 10000;
// TCHAR SetGame[100]; ////游戏设置命令
Data[0] = 7;
Data[1] = 10000;
S_LoadSend(C_Soldier,Data); ///发出设置城市兵力
m_WP.m_JLF[2] = m_JiangLing.GetJLF(USEJLF); //第二个城市的将领表
m_WP.m_JLFhead[2] = m_WP.m_JLF[2];
m_WP.m_JLF[7] = m_JiangLing.GetJLF(USEJLF); //第七个城市的将领表
m_WP.m_JLFhead[7] = m_WP.m_JLF[7];
m_WP.CityPossess[2] = 1; ////主
m_WP.CityPossess[7] = 2; /////副
Data[0] = 7;
for(i = 1; i<(USEJLF+1); i++)
{
Data[i] = m_WP.m_JLF[7]->Codify;
++ m_WP.m_JLF[7];
}
m_WP.m_JLF[7] = m_WP.m_JLFhead[7]; ///还原头指针
S_LoadSend(C_CityJLF,Data); ////发出设置城市使用将领
i_gamework = GAMECOURSE;
::SetTimer(hWnd,RecoveryHP,TimeRecovery,0); /////启动恢复生命记时
::SetTimer(hWnd,VictorySC,TimeVictory,0);
return TRUE;
}
void Game::Init_ShowGameCourse()
{
}
int Game::PtInRectGameCourse(int Cx, int Cy)
{
POINT pt;
pt.x = Cx;
pt.y = Cy;
if(PtInRect(&m_map.City[0],pt))
return City00;
else if(PtInRect(&m_map.City[1],pt))
return City10;
else if(PtInRect(&m_map.City[2],pt))
return City20;
else if(PtInRect(&m_map.City[3],pt))
return City30;
else if(PtInRect(&m_map.City[4],pt))
return City40;
else if(PtInRect(&m_map.City[5],pt))
return City50;
else if(PtInRect(&m_map.City[6],pt))
return City60;
else if(PtInRect(&m_map.City[7],pt))
return City70;
else if(PtInRect(&m_map.City[8],pt))
return City80;
else if(PtInRect(&m_map.City[9],pt))
return City90;
if(m_player.CCityI != -1)
{
if (PtInRect(&m_map.Attack,pt))
return CAttack0;
else if(PtInRect(&m_map.Swap,pt))
return CSwap0;
else if(PtInRect(&m_map.Enrol,pt))
return CEnrol0;
else if(PtInRect(&m_map.Appoint,pt))
return CAppoint0;
else if(PtInRect(&m_map.Absolve,pt))
return CAbsolve0;
else if(PtInRect(&m_map.Conscripy,pt))
return CConscripy0;
}
if(m_player.Choice >9 && m_player.Choice <1000)
{
for(int i = 0; i< 10 ; i++)
{
if(PtInRect(&m_map.Choice[i],pt))
return i;
}
}
return -1;
}
void Game::GameChoice(int Choice)
{
int i=0;
int Data[10];
int S_Timer = 0;
for(i =0; i<10; i++)
{
memset(m_map.T_Choice[i],0,50); /////将文本清零
Data[i] = -1;
}
switch(Choice)
{
case CAttack0:
for(i =0 ; i<10 ; i++)
{
if(m_player.CityPossess[i] != 1)
strcpy(m_map.T_Choice[i],m_WP.CCityT[i]);
}
m_player.Choice = Choice;
break;
case CSwap0:
for(i =0; i<10 ; i++)
{
if(m_player.CityPossess[i] == 1)
strcpy(m_map.T_Choice[i],m_WP.CCityT[i]);
}
m_player.Choice = Choice;
break;
case CEnrol0:
for(i =0; i<USEJLF; i++)
{
if(m_WP.m_JLF[m_player.CCityI]->Codify == -1)
continue;
sprintf(m_map.T_Choice[i],"%s.%d.%d.%d.%d.%d",
m_WP.m_JLF[m_player.CCityI]->Name,
m_WP.m_JLF[m_player.CCityI]->TongLing,
m_WP.m_JLF[m_player.CCityI]->WuLi,
m_WP.m_JLF[m_player.CCityI]->ZhiLi,
m_WP.m_JLF[m_player.CCityI]->ZhengZhi,
m_WP.m_JLF[m_player.CCityI]->HPS);
++ m_WP.m_JLF[m_player.CCityI];
}
m_WP.m_JLF[m_player.CCityI] = m_WP.m_JLFhead[m_player.CCityI]; ///还原原位
m_player.Choice = Choice;
break;
case CAppoint0:
sprintf(m_map.T_Choice[0],"%s","太守");
sprintf(m_map.T_Choice[1],"%s","武将");
sprintf(m_map.T_Choice[2],"%s","参军");
sprintf(m_map.T_Choice[3],"%s","侍中");
m_player.Choice = Choice;
break;
case CConscripy0:
if(m_WP.CityPossess[m_player.CCityI] == 2)
{
Data[0] = m_player.CCityI;
Data[1] = 0;
C_LoadSend(S_Conscripy, Data);
}
else if(m_WP.CityPossess[m_player.CCityI] == 1)
{
int soldier = 0;
soldier = GetConscripy(m_player.CCityI);
///////设置生命
if(m_player.C_JLF[m_player.CCityI][3].Codify != -1)
SetJLFCityHP(m_player.CCityI,3,&m_player.C_JLF[m_player.CCityI][3]); /////本机需要通知
m_player.CitySoldier[m_player.CCityI] = m_player.CitySoldier[m_player.CCityI] + soldier;
SetCitySoldier(m_player.CCityI,m_player.CitySoldier[m_player.CCityI]);
}
S_Timer = GetGameTimer(m_player.CCityI,TimeConscripy);
::SetTimer(hWnd,m_player.CCityI,S_Timer,0);
break;
case CAbsolve0:
if(m_player.C_JLF[m_player.CCityI][0].Codify != -1)
sprintf(m_map.T_Choice[0],"%s","太守");
if(m_player.C_JLF[m_player.CCityI][1].Codify != -1)
sprintf(m_map.T_Choice[1],"%s","武将");
if(m_player.C_JLF[m_player.CCityI][2].Codify != -1)
sprintf(m_map.T_Choice[2],"%s","参军");
if(m_player.C_JLF[m_player.CCityI][3].Codify != -1)
sprintf(m_map.T_Choice[3],"%s","侍中");
m_player.Choice = Choice;
break;
case 0:
WGameCohice(0,m_player.Choice);
break;
case 1:
WGameCohice(1,m_player.Choice);
break;
case 2:
WGameCohice(2,m_player.Choice);
break;
case 3:
WGameCohice(3,m_player.Choice);
break;
case 4:
WGameCohice(4,m_player.Choice);
break;
case 5:
WGameCohice(5,m_player.Choice);
break;
case 6:
WGameCohice(6,m_player.Choice);
break;
case 7:
WGameCohice(7,m_player.Choice);
break;
case 8:
WGameCohice(8,m_player.Choice);
break;
case 9:
WGameCohice(9,m_player.Choice);
break;
}
}
void Game::WGameCohice(int Wint, int Choice)
{
int i=0;
int S_Timer =0;
int Data[10];
int Soldier = 0;
for(i = 0; i<10; i++)
Data[i] = -1;
if(Choice == CAttack0)
{
if(m_player.CityPossess[Wint] == 1)
return;
if(m_player.SC == 2)
{
Data[0] = m_player.CCityI;
Data[1] = Wint;
C_LoadSend(S_Attack,Data); ///发出S, Cliect -> Server的命令
}
else if(m_player.SC == 1)
{
AttackAalculate(m_player.CCityI,Wint);
}
S_Timer = GetGameTimer(m_player.CCityI,TimeAttack);
::SetTimer(hWnd,m_player.CCityI,S_Timer,0);
}
else if(Choice == CSwap0)
{
if(m_player.SC == 2)
{
Data[0] = m_player.CCityI;
Data[1] = Wint;
C_LoadSend(S_Swap, Data);
}
else if(m_player.SC == 1)
{
Soldier = GetSwap(m_player.CCityI, Wint);
}
S_Timer = GetGameTimer(m_player.CCityI,TimeSwap);
::SetTimer(hWnd,m_player.CCityI,S_Timer,0);
}
else if(Choice == CAppoint0)
{
if(Wint == 0)
m_player.Choice = CAppoint00;
else if(Wint == 1)
m_player.Choice = CAppoint01;
else if(Wint == 2)
m_player.Choice = CAppoint02;
else if(Wint == 3)
m_player.Choice = CAppoint03;
if(Wint <4)
{
for(i =0; i<10; i++)
{
if(m_player.W_JLF[i].Codify == -1)
continue;
sprintf(m_map.T_Choice[i],"%s,%d,%d,%d,%d,%d",
m_player.W_JLF[i].Name,
m_player.W_JLF[i].TongLing,
m_player.W_JLF[i].WuLi,
m_player.W_JLF[i].ZhiLi,
m_player.W_JLF[i].ZhengZhi,
m_player.W_JLF[i].HP);
}
}
}
else if(Choice == CAppoint00 || Choice == CAppoint01 || Choice == CAppoint02 || Choice == CAppoint03)
{
int CA;
if(Choice == CAppoint00)
CA = CAppoint00 - 400;
else if(Choice == CAppoint01)
CA = CAppoint01 - 400;
else if(Choice == CAppoint02)
CA = CAppoint02 - 400;
else if(Choice == CAppoint03)
CA = CAppoint03 - 400;
if(m_player.W_JLF[Wint].Codify != -1)
{
JLF m_jlf;
m_jlf.Codify = -1;
if(m_player.C_JLF[m_player.CCityI][CA].Codify != -1)
{
m_jlf.Codify = m_player.C_JLF[m_player.CCityI][CA].Codify;
m_jlf.Country1 = m_player.C_JLF[m_player.CCityI][CA].Country1;
m_jlf.Country2 = m_player.C_JLF[m_player.CCityI][CA].Country2;
m_jlf.HP = m_player.C_JLF[m_player.CCityI][CA].HP;
m_jlf.HPS = m_player.C_JLF[m_player.CCityI][CA].HPS;
strcpy(m_jlf.Name,m_player.C_JLF[m_player.CCityI][CA].Name);
m_jlf.TongLing = m_player.C_JLF[m_player.CCityI][CA].TongLing;
m_jlf.WuLi = m_player.C_JLF[m_player.CCityI][CA].WuLi;
m_jlf.ZhengZhi = m_player.C_JLF[m_player.CCityI][CA].ZhengZhi;
m_jlf.ZhiLi = m_player.C_JLF[m_player.CCityI][CA].ZhiLi;
}
SetCityJLF(m_player.CCityI,CA,&m_player.W_JLF[Wint]);
if(m_jlf.Codify != -1)
{
m_player.W_JLF[Wint].Codify = m_jlf.Codify;
m_player.W_JLF[Wint].Country1 = m_jlf.Country1;
m_player.W_JLF[Wint].Country2 = m_jlf.Country2;
m_player.W_JLF[Wint].HP = m_jlf.HP;
m_player.W_JLF[Wint].HPS = m_jlf.HPS;
strcpy(m_player.W_JLF[Wint].Name,m_jlf.Name);
m_player.W_JLF[Wint].TongLing = m_jlf.TongLing;
m_player.W_JLF[Wint].WuLi = m_jlf.WuLi;
m_player.W_JLF[Wint].ZhengZhi = m_jlf.ZhengZhi;
m_player.W_JLF[Wint].ZhiLi = m_jlf.ZhiLi;
}
else
{
m_player.W_JLF[Wint].Codify = -1; ////////如果要任命的没有将领则无须替换直接清-1
}
S_Timer = GetGameTimer(m_player.CCityI,TimeTAppoint);
::SetTimer(hWnd,m_player.CCityI,S_Timer,0);
}
}
else if(Choice == CEnrol0)
{
if(Wint >= USEJLF) ////不能超过这个数否则无效
return;
m_WP.m_JLF[m_player.CCityI] = m_WP.m_JLF[m_player.CCityI] + Wint;//定位指针
if(m_WP.m_JLF[m_player.CCityI]->Codify == -1) ////如果为-1表示没有将领
return;
for(i = 0; i<10; i++)
{
if(m_player.W_JLF[i].Codify == -1)
{
m_player.W_JLF[i].Codify = m_WP.m_JLF[m_player.CCityI]->Codify;
m_player.W_JLF[i].Country1 = m_WP.m_JLF[m_player.CCityI]->Country1;
m_player.W_JLF[i].Country2 = m_WP.m_JLF[m_player.CCityI]->Country2;
m_player.W_JLF[i].HP = m_WP.m_JLF[m_player.CCityI]->HP;
m_player.W_JLF[i].HPS = m_WP.m_JLF[m_player.CCityI]->HPS;
strcpy(m_player.W_JLF[i].Name,m_WP.m_JLF[m_player.CCityI]->Name);
m_player.W_JLF[i].TongLing = m_WP.m_JLF[m_player.CCityI]->TongLing;
m_player.W_JLF[i].WuLi = m_WP.m_JLF[m_player.CCityI]->WuLi;
m_player.W_JLF[i].ZhengZhi = m_WP.m_JLF[m_player.CCityI]->ZhengZhi;
m_player.W_JLF[i].ZhiLi = m_WP.m_JLF[m_player.CCityI]->ZhiLi;
if(m_player.SC == 2)
{
Data[0] = m_player.CCityI;
Data[1] = m_player.W_JLF[i].Codify;
C_LoadSend(S_Recruitment,Data); ///发出S, Cliect -> Server的命令
m_WP.m_JLF[m_player.CCityI] = m_WP.m_JLFhead[m_player.CCityI];
}
else if(m_player.SC == 1)
{
m_WP.m_JLF[m_player.CCityI]->Codify = -1;
m_WP.m_JLF[m_player.CCityI] = m_WP.m_JLFhead[m_player.CCityI]; //还原指针
m_JiangLing.SetJLF(m_WP.m_JLF[m_player.CCityI],USEJLF); ////将当前数据再放回队列
delete []m_WP.m_JLF[m_player.CCityI];
m_WP.m_JLF[m_player.CCityI] = m_JiangLing.GetJLF(USEJLF);
m_WP.m_JLFhead[m_player.CCityI] = m_WP.m_JLF[m_player.CCityI];
}
break;
}
}
if( i == 10)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -