📄 vexillumview.cpp
字号:
}
if(i&&j)
return 1;
else
return 0;
}
void CVexillumView::KCanTouch(int xzchess,int fromx,int fromy,int dijichess,int tox,int toy)
{
if((xzchess==nochess)&&(dijichess!=nochess)&&(qzwz[tox][toy].diyou==0))
{//选中敌方棋子
xzbz.qizibiaozhi=dijichess;
xzbz.x=tox;
xzbz.y=toy;
text=8;
InvalidateRect(NULL,FALSE);
UpdateWindow(); // 重画窗口
}
if((xzchess==nochess)&&(dijichess!=nochess)&&qzwz[tox][toy].diyou)
{
//你点中的是我方棋子
text=6;
InvalidateRect(NULL,FALSE);
UpdateWindow(); // 重画窗口
}
if((xzchess==nochess)&&(dijichess==nochess))
{
//哪里又没有棋,你瞎点什么
text=7;
InvalidateRect(NULL,FALSE);
UpdateWindow(); // 重画窗口
}
if((xzchess!=nochess)&&(dijichess!=nochess)&&(qzwz[tox][toy].diyou==0))
{//选中自己棋子
if((fromx==tox)&&(fromy==toy))
{
qzwz[fromx][fromy].k=1;
xzbz.qizibiaozhi=nochess;
}
else
{
qzwz[fromx][fromy].k=1;
xzbz.qizibiaozhi=dijichess;
xzbz.x=tox;
xzbz.y=toy;
}
text=8;
InvalidateRect(NULL,FALSE);
UpdateWindow(); // 重画窗口
}
if((xzchess!=nochess)&&(dijichess==nochess))
{
//从有棋的地方向没有棋 的地方走棋
CanMove(xzchess,fromx,fromy,nochess,tox,toy);
}
else
{
if((xzchess!=nochess)&&(dijichess!=nochess)&&(qzwz[tox][toy].diyou))
{
CanMove(xzchess,fromx,fromy,dijichess,tox,toy);//移动敌方棋子,吃我方棋子
}
}
}
void CVexillumView::CanMove(int xzchess,int fromx,int fromy,int dijichess,int tox,int toy)
{
//能否到达搜索
int r;
r=0;
if((xzchess==0)||(xzchess==1))
{
r=0; //不能移动---------------------------------------待写
}
if(xzchess==3) //工兵-------------------------------------------工兵待写
{
for(int hhh=0;hhh<80;hhh++)
gzjlj[hhh].z=0;
GongBingCorrelation(fromx,fromy);
gbk=0;
for(int qx=0;qx<8;qx++)
for(int wx=0;wx<30;wx++)
{
if(zjlj[qx][wx].z)
{
gzjlj[gbk].x=zjlj[qx][wx].x;
gzjlj[gbk].y=zjlj[qx][wx].y;
gzjlj[gbk].z=1;
gbk++;
}
}
for(int rr5=0;rr5<80;rr5++)
if(gzjlj[rr5].z)
if((gzjlj[rr5].x==tox)&&(gzjlj[rr5].y==toy))
r=1;
}
if((xzchess==2)||((xzchess>3)&&(xzchess<12)))
{
Correlation(fromx,fromy);
for(int q6=0;q6<8;q6++)
for(int qq6=0;qq6<30;qq6++)
{
if(zjlj[q6][qq6].z)
if((zjlj[q6][qq6].x==tox)&&(zjlj[q6][qq6].y==toy))
r=1;
}
}
if(r)
{
qzwz[fromx][fromy].k=1;
qzwz[tox][toy].k=1;
if(qzwz[tox][toy].qizibiaozhi==junqi)
{kkkkk=5;text=2;}
qqqqqqqq++;
if(dijichess==nochess)
{
//------------------------------调用估值函数-------------------------
GuZhi(dijichess,tox,toy,fromx,fromy,0);
ChuanZhi(fromx,fromy,tox,toy);
qzwz[tox][toy].diyou=qzwz[fromx][fromy].diyou;
qzwz[tox][toy].qizibiaozhi=qzwz[fromx][fromy].qizibiaozhi;
qzwz[fromx][fromy].qizibiaozhi=nochess;
xzbz.qizibiaozhi=nochess;
}
else
{
if((xzchess==gongbing)&&(dijichess==dilei))
{
int u;
for(int r=0;r<12;r++)
{
u=guess[fromx][fromy].qizi[r];
guess[fromx][fromy].qizi[r]=0;
if(r==gongbing)
JunJian(gongbing,u);
else
JunFei(r,u);
}
guess[fromx][fromy].qizi[gongbing]=1000;
ChuanZhi(fromx,fromy,tox,toy);
qzwz[tox][toy].diyou=0;
qzwz[tox][toy].qizibiaozhi=gongbing;
qzwz[fromx][fromy].qizibiaozhi=nochess;
xzbz.qizibiaozhi=nochess;
}
else
{
if((xzchess==2)||(dijichess==2)||(dijichess==1)||(qzwz[tox][toy].qizibiaozhi==qzwz[fromx][fromy].qizibiaozhi))
{
//----------------------------调用估值函数------------------------
GuZhi(xzchess,tox,toy,fromx,fromy,0);
qzwz[tox][toy].qizibiaozhi=nochess;
qzwz[fromx][fromy].qizibiaozhi=nochess;
xzbz.qizibiaozhi=nochess;
}
else
{
//---------------------------调用估值函数------------------------
if(qzwz[tox][toy].qizibiaozhi>qzwz[fromx][fromy].qizibiaozhi)
{
GuZhi(dijichess,tox,toy,fromx,fromy,1);
xzbz.qizibiaozhi=nochess;
qzwz[fromx][fromy].qizibiaozhi=nochess;
guess[fromx][fromy].z=0;
}
else
{
GuZhi(dijichess,tox,toy,fromx,fromy,-1);
ChuanZhi(fromx,fromy,tox,toy);
qzwz[tox][toy].diyou=qzwz[fromx][fromy].diyou;
qzwz[tox][toy].qizibiaozhi=qzwz[fromx][fromy].qizibiaozhi;
qzwz[fromx][fromy].qizibiaozhi=nochess;
xzbz.qizibiaozhi=nochess;
}
}
}
}
if(kkkkk!=5)
text=9;
InvalidateRect(NULL,FALSE);
UpdateWindow(); // 重画窗口
}
else
{
if((xzchess==dilei)||(xzchess==junqi))
{
text=10;
InvalidateRect(NULL,FALSE);
UpdateWindow(); // 重画窗口
}
else
{
text=11;
InvalidateRect(NULL,FALSE);
UpdateWindow(); // 重画窗口
}
}
}
void CVexillumView::Correlation(int x,int y)
{//位置相关函数
for(int a=0;a<8;a++)
for(int aa=0;aa<30;aa++)
zjlj[a][aa].z=0;
for(int i=0;i<8;i++)
{
switch(i)
{
case 0://向上搜索
if(x>0)
{
int k;
k=0;
if((qzwz[x-1][y].qizibiaozhi!=nochess)&&((qzwz[x-1][y].wzbz==2)||(qzwz[x][y].diyou==qzwz[x-1][y].diyou)))
;
else
{
if((y==0)||(y==4))
{
if((x>1)&&(qzwz[x][y].wzbz==3))
{
for(int q=0;q<20;q++)
{
if((x-q)>1)
{
if(qzwz[x-q-1][y].qizibiaozhi==nochess)
{
zjlj[i][k].x=x-q-1;
zjlj[i][k].y=y;
zjlj[i][k].z=1;
k++;
}
else
{
if(qzwz[x-q-1][y].diyou==qzwz[x][y].diyou)
q=30;
else{
zjlj[i][k].x=x-q-1;
zjlj[i][k].y=y;
zjlj[i][k].z=1;
q=30;
}
}
}
else
q=30;
}
}
else
{
zjlj[i][k].x=x-1;
zjlj[i][k].y=y;
zjlj[i][k].z=1;
}
}
else
{
if(x==8)
{
if(y==2)
{
zjlj[i][k].x=5;
zjlj[i][k].y=y;
zjlj[i][k].z=1;
}
}
else
{
zjlj[i][k].x=x-1;
zjlj[i][k].y=y;
zjlj[i][k].z=1;
}
}
}
}
break;
case 1://向右前方搜索
int k;
k=0;
if((x>0)&&(y<4))
{
if((qzwz[x-1][y+1].qizibiaozhi!=nochess)&&((qzwz[x-1][y+1].diyou==qzwz[x][y].diyou)||(qzwz[x-1][y+1].wzbz==2)))
;
else
{
if(((y==0)||(y==2))&&((x==3)||(x==5)||(x==10)||(x==12)))
{
zjlj[i][k].x=x-1;
zjlj[i][k].y=y+1;
zjlj[i][k].z=1;
}
if(((y==1)||(y==3))&&((x==2)||(x==4)||(x==9)||(x==11)))
{
zjlj[i][k].x=x-1;
zjlj[i][k].y=y+1;
zjlj[i][k].z=1;
}
}
}
break;
case 2://向右搜索
if(y<4)
{
int k;
k=0;
if((qzwz[x][y+1].qizibiaozhi!=nochess)&&((qzwz[x][y+1].wzbz==2)||(qzwz[x][y+1].diyou==qzwz[x][y].diyou)))
;
else
{
if((x==1)||(x==5)||(x==8)||(x==12))
{
for(int q1=0;q1<6;q1++)
{
if((y+q1)<4)
{
if(qzwz[x][y+q1+1].qizibiaozhi==nochess)
{
zjlj[i][k].x=x;
zjlj[i][k].y=y+q1+1;
zjlj[i][k].z=1;
k++;
}
else
{
if(qzwz[x][y+q1+1].diyou==qzwz[x][y].diyou)
q1=6;
else
{
zjlj[i][k].x=x;
zjlj[i][k].y=y+q1+1;
zjlj[i][k].z=1;
q1=6;
}
}
}
else
q1=6;
}
}
else
{
zjlj[i][k].x=x;
zjlj[i][k].y=y+1;
zjlj[i][k].z=1;
}
}
}
break;
case 3:
if((x<12)&&(y<4))
{
int k;
k=0;
if((qzwz[x+1][y+1].qizibiaozhi!=nochess)&&((qzwz[x+1][y+1].wzbz==2)||(qzwz[x+1][y+1].diyou==qzwz[x][y].diyou)))
;
else
{
if(((y==0)||(y==2))&&((x==1)||(x==3)||(x==8)||(x==10)))
{
zjlj[i][k].x=x+1;
zjlj[i][k].y=y+1;
zjlj[i][k].z=1;
}
if(((y==1)||(y==3))&&((x==2)||(x==4)||(x==9)||(x==11)))
{
zjlj[i][k].x=x+1;
zjlj[i][k].y=y+1;
zjlj[i][k].z=1;
}
}
}
break;
case 4://向下搜索
if(x<13)
{
int k;
k=0;
if((qzwz[x+1][y].qizibiaozhi!=nochess)&&((qzwz[x+1][y].diyou==qzwz[x][y].diyou)||(qzwz[x+1][y].wzbz==2)))
;
else
{
if((y==0)||(y==4))
{
if((x>0)&&(x<12))
{
for(int q=0;q<20;q++)
{
if((x+q)<12)
{
if(qzwz[x+q+1][y].qizibiaozhi==nochess)
{
zjlj[i][k].x=x+q+1;
zjlj[i][k].y=y;
zjlj[i][k].z=1;
k++;
}
else
{
if(qzwz[x+q+1][y].diyou==qzwz[x][y].diyou)
q=30;
else
{
zjlj[i][k].x=x+q+1;
zjlj[i][k].y=y;
zjlj[i][k].z=1;
q=30;
}
}
}
}
}
else
{
zjlj[i][k].x=x+1;
zjlj[i][k].y=y;
zjlj[i][k].z=1;
}
}
else
{
if(x==5)
{
if(y==2)
{
zjlj[i][k].x=8;
zjlj[i][k].y=y;
zjlj[i][k].z=1;
}
}
else
{
zjlj[i][k].x=x+1;
zjlj[i][k].y=y;
zjlj[i][k].z=1;
}
}
}
}
break;
case 5://左下
if((x<13)&&(y>0))
{
int k;
k=0;
if((qzwz[x+1][y-1].qizibiaozhi!=nochess)&&((qzwz[x+1][y-1].diyou==qzwz[x][y].diyou)||(qzwz[x+1][y-1].wzbz==2)))
;
else
{
if(((y==1)||(y==3))&&((x==2)||(x==4)||(x==9)||(x==11)))
{
zjlj[i][k].x=x+1;
zjlj[i][k].y=y-1;
zjlj[i][k].z=1;
}
if(((y==2)||(y==4))&&((x==1)||(x==3)||(x==8)||(x==10)))
{
zjlj[i][k].x=x+1;
zjlj[i][k].y=y-1;
zjlj[i][k].z=1;
}
}
}
break;
case 6:
if(y>0)
{
int k;
k=0;
if((qzwz[x][y-1].qizibiaozhi!=nochess)&&((qzwz[x][y-1].diyou==qzwz[x][y].diyou)||(qzwz[x][y-1].wzbz==2)))
;
else
{
if((x==1)||(x==5)||(x==8)||(x==12))
{
for(int q=0;q<5;q++)
{
if((y-q)>0)
{
if(qzwz[x][y-q-1].qizibiaozhi==nochess)
{
zjlj[i][k].x=x;
zjlj[i][k].y=y-q-1;
zjlj[i][k].z=1;
k++;
}
else
{
if(qzwz[x][y-q-1].diyou==qzwz[x][y].diyou)
q=6;
else
{
zjlj[i][k].x=x;
zjlj[i][k].y=y-q-1;
zjlj[i][k].z=1;
q=6;
}
}
}
else
q=6;
}
}
else
{
zjlj[i][k].x=x;
zjlj[i][k].y=y-1;
zjlj[i][k].z=1;
}
}
}
break;
case 7:
if((x>0)&&(y>0))
{
int k;
k=0;
if((qzwz[x-1][y-1].qizibiaozhi!=nochess)&&((qzwz[x-1][y-1].diyou==qzwz[x][y].diyou)||(qzwz[x-1][y-1].wzbz==2)))
;
else
{
if(((y==1)||(y==3))&&((x==2)||(x==4)||(x==9)||(x==11)))
{
zjlj[i][k].x=x-1;
zjlj[i][k].y=y-1;
zjlj[i][k].z=1;
}
if(((y==2)||(y==4))&&((x==3)||(x==5)||(x==10)||(x==12)))
{
zjlj[i][k].x=x-1;
zjlj[i][k].y=y-1;
zjlj[i][k].z=1;
}
}
}
break;
}
}
for(int qq=0;qq<8;qq++)
for(int qq1=0;qq1<30;qq1++)
{
if((zjlj[qq][qq1].x==6)||(zjlj[qq][qq1].x==7))
zjlj[qq][qq1].z=0;
}
}
void CVexillumView::BuJu()
{
for(int aa=0;aa<6;aa++)
for(int aaa=0;aaa<5;aaa++)
qzwz[aa][aaa].qizibiaozhi=nochess;
int k1;
srand( (unsigned)time( NULL ) );
k1=rand()%2+rand()%2+rand()%2;
if((k1==0)||(k1==2))
{
if(k1==0)
{
qzwz[0][0].qizibiaozhi=paizhang;
qzwz[0][1].qizibiaozhi=junqi;
qzwz[0][2].qizibiaozhi=tuanzhang;
qzwz[0][3].qizibiaozhi=dilei;
qzwz[0][4].qizibiaozhi=lianzhang;
qzwz[1][0].qizibiaozhi=shizhang;
qzwz[1][1].qizibiaozhi=siling;
qzwz[1][2].qizibiaozhi=dilei;
qzwz[1][3].qizibiaozhi=junzhang;
qzwz[1][4].qizibiaozhi=lianzhang;
qzwz[2][0].qizibiaozhi=yingzhang;
qzwz[2][2].qizibiaozhi=gongbing;
qzwz[2][4].qizibiaozhi=dilei;
qzwz[3][0].qizibiaozhi=gongbing;
qzwz[3][1].qizibiaozhi=tuanzhang;
qzwz[3][3].qizibiaozhi=shizhang;
qzwz[3][4].qizibiaozhi=lianzhang;
}
if(k1==2)
{
qzwz[0][0].qizibiaozhi=lianzhang;
qzwz[0][1].qizibiaozhi=dilei;
qzwz[0][2].qizibiaozhi=yingzhang;
qzwz[0][3].qizibiaozhi=junqi;
qzwz[0][4].qizibiaozhi=paizhang;
qzwz[1][0].qizibiaozhi=lianzhang;
qzwz[1][1].qizibiaozhi=junzhang;
qzwz[1][2].qizibiaozhi=dilei;
qzwz[1][3].qizibiaozhi=siling;
qzwz[1][4].qizibiaozhi=shizhang;
qzwz[2][0].qizibiaozhi=dilei;
qzwz[2][2].qizibiaozhi=gongbing;
qzwz[2][4].qizibiaozhi=yingzhang;
qzwz[3][0].qizibiaozhi=lianzhang;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -