?? 3_1view.cpp
字號:
switch(numbig.y)
{
case 4:
searchcandown4(i,j,numbig.x);break;
case 3:
searchcandown3(i,j,numbig.x);break;
case 2:
searchcandown2(i,j,numbig.x);break;
default:
searchcandown1(i,j,numbig.x);
}
}
CPoint CMy3_1View::maxnum(int a, int b, int c, int d)
{
//point.x為方向值
//point.y為最大值
CPoint point;
if(a>=b)
{
point.x=0;
point.y=a;
}
else
{
point.x=1;
point.y=b;
}
if(c>point.y)
{
point.x=2;
point.y=c;
}
if(d>point.y)
{
point.x=3;
point.y=d;
}
return point;
}
//有四個同色棋
void CMy3_1View::searchcandown4(int i, int j, int n)
{
// CPoint point;
int k;
///////////////////////////// num[0] "--"
if(n==0)
for(k=0;k<5;k++)
//如果第一個是空
if(wzq[i][j]==0)
{
//如果下面有白棋
if(wzq[i+1][j]==1)
{
//下面位置可以下棋,已經有四個白棋
wpointcan4.x=i;
wpointcan4.y=j;
break;
}
else
{
//下面位置可以下棋,已經有四個黑棋
bpointcan4.x=i;
bpointcan4.y=j;
break;
}
}
//如果找到下棋位置,一定能找到!
else if(wzq[i+k][j]==0)
{
//如果第一個是白棋
if(wzq[j][j]==1)
{
wpointcan4.x=i+k;
wpointcan4.y=j;
break;
}
//否則第一個是黑棋
else
{
bpointcan4.x=i+k;
bpointcan4.y=j;
break;
}
}
//////////////////////////// num[1] "|"
if(n==1)
for(k=0;k<5;k++)
{
if(wzq[i][j]==0)
if(wzq[i][j+1]==1)
{
wpointcan4.x=i;
wpointcan4.y=j;
break;
}
else
{
bpointcan4.x=i;
bpointcan4.y=j;
break;
}
else if(wzq[i][j+k]==0)
{
if(wzq[i][j]==1)
{
wpointcan4.x=i;
wpointcan4.y=j+k;
break;
}
else
{
bpointcan4.x=i;
bpointcan4.y=j+k;
break;
}
}
}
/////////////////////////////// num[2] "\"
if(n==2)
for(k=0;k<5;k++)
{
if(wzq[i][j]==0)
if(wzq[i+1][j+1]==1)
{
wpointcan4.x=i;
wpointcan4.y=j;
break;
}
else
{
bpointcan4.x=i;
bpointcan4.y=j;
break;
}
else if(wzq[i+k][j+k]==0)
{
if(wzq[i][j]==1)
{
wpointcan4.x=i+k;
wpointcan4.y=j+k;
break;
}
else
{
bpointcan4.x=i+k;
bpointcan4.y=j+k;
break;
}
}
}
////////////////////////////// num[3] "/"
if(n==3)
for(k=0;k<5;k++)
{
if(wzq[i][j]==0)
if(wzq[i-1][j+1]==1)
{
wpointcan4.x=i;
wpointcan4.y=j;
break;
}
else
{
bpointcan4.x=i;
bpointcan4.y=j;
break;
}
else if(wzq[i-k][j+k]==0)
{
if(wzq[i][j]==1)
{
wpointcan4.x=i-k;
wpointcan4.y=j+k;
break;
}
else
{
bpointcan4.x=i-k;
bpointcan4.y=j+k;
break;
}
}
}
}
//最多有三個同色
void CMy3_1View::searchcandown3(int i, int j, int n)
{
int k=0;
///////////////////////////// num[0] "--"
if(n==0)
for(k=0;k<5;k++)
//找到位置
if(wzq[i+k][j]==0)
{
//下一個是白棋
if(wzq[i+k+1][j]==1)
{
//下面位置可以下棋,已經有三個白棋
wpointcan3.x=i+k;
wpointcan3.y=j;
}
//下一個是黑棋
else if(wzq[i+k+1][j]==-1)
{
bpointcan3.x=i+k;
bpointcan3.y=j;
}
}
//////////////////////////// num[1] "|"
if(n==1)
for(k=0;k<5;k++)
if(wzq[i][j+k]==0)
{
if(wzq[i][j+k-1]==1)
{
wpointcan3.x=i;
wpointcan3.y=j+k;
}
else if(wzq[i][j+k+1]==-1)
{
bpointcan3.x=i;
bpointcan3.y=j+k;
}
}
/////////////////////////////// num[2] "\"
if(n==2)
for(k=0;k<5;k++)
if(wzq[i+k][j+k]==0)
{
if(wzq[i+k+1][j+k+1]==1)
{
wpointcan3.x=i+k;
wpointcan3.y=j+k;
}
else if(wzq[i+k+1][j+k+1]==-1)
{
bpointcan3.x=i+k;
bpointcan3.y=j+k;
}
}
////////////////////////////// num[3] "/"
if(n==3)
for(k=0;k<5;k++)
if(wzq[i-k][j+k]==0)
{
if(wzq[i-k-1][j+k+1]==1)
{
wpointcan3.x=i-k;
wpointcan3.y=j+k;
}
else if(wzq[i-k-1][j+k+1]==-1)
{
bpointcan3.x=i-k;
bpointcan3.y=j+k;
}
}
}
//最多有兩個同色
void CMy3_1View::searchcandown2(int i, int j, int n)
{
int k=0,m=0,a=0,b=0;
///////////////////////////// num[0] "--"
if(n==0)
{
//判斷有多少個空位置
for(k=0;k<5;k++)
if(wzq[i+k][j]==0)
m+=1;
//如果只有一個空位置
if(m==1)
for(a=0;a<5;a++)
//找到空位置
if(wzq[i+a][j]==0)
{
//下面兩個棋子值的和
b=wzq[i+a+1][j]+wzq[i+a+2][j];
//都是黑棋
if(b==-2)
{
//下面位置可以下棋,旁邊有兩個黑棋
bpointcan2.x=i+a;
bpointcan2.y=j;
}
//都是白棋
if(b==2)
{
wpointcan2.x=i+a;
wpointcan2.y=j;
}
}
//如果有三個空位置,說明另外兩個同色
if(m==3)
{
for(a=0;a<5;a++)
//如果兩個是黑棋
if(wzq[i+a][j]==-1)
{
for(b=0;b<5;b++)
//如果找到空位置
if(wzq[i+b][j]==0)
{
//下面位置可以下棋,旁邊有兩個黑棋
bpointcan2.x=i+b;
bpointcan2.y=j; break;
}
}
else
//如果兩個是白棋
if(wzq[i+a][j]==1)
{
for(b=0;b<5;b++)
if(wzq[i+b][j]==0)
{
wpointcan2.x=i+b;
wpointcan2.y=j; break;
}
}
}
}
//////////////////////////// num[1] "|"
m=0;
if(n==1)
{
for(k=0;k<5;k++)
if(wzq[i][j+k]==0)
m++;
if(m==1)
for(a=0;a<5;a++)
if(wzq[i][j+a]==0)
{
b=wzq[i][j+a+1]+wzq[i][j+a+2];
if(b==-2)
{
bpointcan2.x=i;
bpointcan2.y=j+a;
}
if(b==2)
{
wpointcan2.x=i;
wpointcan2.y=j+a;
}
}
if(m==3)
{
for(a=0;a<5;a++)
if(wzq[i][j+a]==-1)
{
for(b=0;b<5;b++)
if(wzq[i][j+b]==0)
{
bpointcan2.x=i;
bpointcan2.y=j+b; break;
}
}
else
if(wzq[i][j+a]==1)
{
for(b=0;b<5;b++)
if(wzq[i][j+b]==0)
{
wpointcan2.x=i;
wpointcan2.y=j+b; break;
}
}
}
}
/////////////////////////////// num[2] "\"
m=0;
if(n==2)
{
for(k=0;k<5;k++)
if(wzq[i+k][j+k]==0)
m++;
if(m==1)
for(a=0;a<5;a++)
if(wzq[i+a][j+a]==0)
{
b=wzq[i+a+1][j+a+1]+wzq[i+a+2][j+a+2];
if(b==-2)
{
bpointcan2.x=i+a;
bpointcan2.y=j+a;
}
if(b==2)
{
wpointcan2.x=i+a;
wpointcan2.y=j+a;
}
}
if(m==3)
{
for(a=0;a<5;a++)
if(wzq[i+a][j+a]==-1)
{
for(b=0;b<5;b++)
if(wzq[i+b][j+b]==0)
{
bpointcan2.x=i+b;
bpointcan2.y=j+b; break;
}
}
else
if(wzq[i+a][j+a]==1)
{
for(b=0;b<5;b++)
if(wzq[i+b][j+b]==0)
{
wpointcan2.x=i+b;
wpointcan2.y=j+b; break;
}
}
}
}
////////////////////////////// num[3] "/"
m=0;
if(n==3)
{
for(k=0;k<5;k++)
if(wzq[i-k][j+k]==0)
m++;
if(m==1)
for(a=0;a<5;a++)
if(wzq[i-a][j+a]==0)
{
b=wzq[i-a-1][j+a+1]+wzq[i-a-2][j+a+2];
if(b==-2)
{
bpointcan2.x=i-a;
bpointcan2.y=j+a;
}
if(b==2)
{
wpointcan2.x=i-a;
wpointcan2.y=j+a;
}
}
if(m==3)
{
for(a=0;a<5;a++)
if(wzq[i-a][j+a]==-1)
{
for(b=0;b<5;b++)
if(wzq[i-b][j+b]==0)
{
bpointcan2.x=i-b;
bpointcan2.y=j+b; break;
}
}
else
if(wzq[i-a][j+a]==1)
{
for(b=0;b<5;b++)
if(wzq[i-b][j+b]==0)
{
wpointcan2.x=i-b;
wpointcan2.y=j+b; break;
}
}
}
}
}
//如果五個位置的和是一
void CMy3_1View::searchcandown1(int i, int j, int n)
{
//計算剛才白棋落棋點
int ii=(vspoint.x-30)/20;
int jj=(vspoint.y-30)/20;
int a;
for(a=0;a<5;a++)
//如果不到邊界
if(ii+a<19)
{
//向右,如果有空位置
if(wzq[ii+a][jj]==0)
{
//在這個位置下黑棋
bpointcan1.x=ii+a;
bpointcan1.y=jj;
return;
}
}
//到了邊界
else
//向左,如果有空位置
if(wzq[ii-1][jj]==0)
{
bpointcan1.x=ii-a;
bpointcan1.y=jj;
return;
}
}
//vscomputer:2表示人對人,1表示人對機
void CMy3_1View::OnPlayer()
{
// TODO: Add your command handler code here
vscomputer=2;
OnStart();
}
void CMy3_1View::OnCpmputer()
{
// TODO: Add your command handler code here
vscomputer=1;
OnStart();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -