📄 computer.cpp
字号:
// Computer.cpp: implementation of the Computer class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "program.h"
#include "Computer.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern Managers manager;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Computer::Computer()
{
planes=manager.Planes;
}
Computer::~Computer()
{
}
int Computer::DoAction(int roll)
{
int &Game_State=manager.Game_State;
int i,j,kgo;
for(i=0;i<4;i++)
{
go[i]=0;
pl[i]=planes[Game_State*4+i];
}
for(i=0;i<4;i++)
{
if(pl[i].state==0)
{
if(roll==6)
go[i]+=20;
}
else if(pl[i].state==1 || pl[i].state==2)//当飞机在飞的时候
{
pl[i].step+=roll;
pl[i].state=2;
if(pl[i].Color==0 && pl[i].step>49 && pl[i].step-roll<=49)//4个判断 分别判断飞机是否该降落
{
pl[i].state=3;
if(pl[i].step==55 && pl[i].state==3)
pl[i].state=4;
}
if(pl->state<3)
pl->step%=52;
if(pl[i].Color==1 && pl[i].step>10 && pl[i].step-roll<=10)
{
pl[i].state=3;
if(pl[i].step==16 && pl[i].state==3)
pl[i].state=4;
}
if(pl[i].Color==2 && pl[i].step>23 && pl[i].step-roll<=23)
{
pl[i].state=3;
if(pl[i].step==29 && pl[i].state==3)
pl[i].state=4;
}
if(pl[i].Color==3 && pl[i].step>36 && pl[i].step-roll<=36)
{
pl[i].state=3;
if(pl[i].step==42 && pl[i].state==3)
pl[i].state=4;
}
if(pl[i].state==2)
{
if((j=SearchBut(pl[i].step,pl[i].state,pl[i].Color))!=-1)
{
if(j>100)
go[i]-=1000;
else
go[i]+=30;
}
if(pl[i].step==(manager.DefStep(pl[i].Color)+18)%52)
{
go[i]+=15;
pl[i].step=(pl[i].step+12)%52;
if((j=SearchBut(pl[i].step,pl[i].state,pl[i].Color))!=-1)
{
if(j>100)
go[i]-=100;
else
go[i]+=30;
}
}
else if(pl[i].step%4==pl[i].Color)
{
go[i]+=5;
pl[i].step=(pl[i].step+4)%52;
if((j=SearchBut(pl[i].step,pl[i].state,pl[i].Color))!=-1)
{
if(j>100)
go[i]-=1000;
else
go[i]+=30;
}
}
if(j==-1 && (j=SearchBut(pl[i]))!=-1)
{
if(j>100)
go[i]+=10;
else if(j<100)
go[i]+=20;
}
}
if(pl[i].state==3)
go[i]+=10;
if(pl[i].state==4)
go[i]+=15;
}
else if(pl[i].state==3)
{
int k;
k=manager.OverStep(pl[i].Color)+6;
if(pl[i].step+roll==k)
{
pl[i].step=k;
pl[i].state=4;
}
else if(pl[i].step+roll<k)
pl[i].step+=roll;
else
{
pl[i].step+=roll-(k-pl[i].step);
}
if(pl[i].state==4)
go[i]+=10;
else
go[i]-=5;
}
else if(pl[i].state==4)
go[i]-=10000;
}
j=-9999;
for(i=0;i<4;i++)
if(go[i]>j)
{
j=go[i];
kgo=i;
}
if(i<4)
return i+Game_State*4;
return -1;
}
int Computer::SearchBut(int step, int state, int butcolor)
{
Chess *p=planes;
int k,i=-1;
for(k=0;k<16;k++)
{
if(p->state==state && p->step==step && p->Color!=butcolor)
{
if(i==0)
i=k;
else
i+=100;
};
p++;
}
return i;
}
int Computer::SearchBut(Chess butpl)
{
Chess *p=planes;
int k,i=-1;
for(k=0;k<16;k++)
{
if(p->state==butpl.state && p->step==butpl.step && p->Color==butpl.Color)
{
if(i==0)
i=k;
else
i+=100;
};
p++;
}
return i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -