用C语言编五子棋程序,,只要写出棋盘还有垂直水平一个对角线方向的成功判断即可

2024-11-25 22:20:34
推荐回答(1个)
回答1:

BOOL check(CPoint point,int type,int w,int h)//point 是用来标志当前棋子的位置,type 是黑白方 w h棋盘的大小
{
int num=-1;
int i=0,j=0,sta=0;
for(i=point.x,j=point.x;i>=0&&j {
sta=0;
if(i>=0&&n_map[point.y][i]==type)
{
++sta;
++num;
--i;
}
if(j {
++sta;
++num;
++j;
}
if(sta==0) break;
}
if(num>=5) return true;//横

num=-1;
for(i=point.y,j=point.y;i>=0&&j {
sta=0;
if(i>=0&&n_map[i][point.x]==type)
{
++sta;
++num;
--i;
}
if(j {
++sta;
++num;
++j;
}
if(sta==0) break;
}
if(num>=5) return true;//竖

num=-1;
for(i=0,j=0;i<5&&j<5;)
{
sta=0;
if((point.y-i)>=0&&(point.x+i) {
++sta;
++num;
++i;
}
if((point.y+j)=0&&n_map[point.y+j][point.x-j]==type)//下
{
++sta;
++num;
++j;
}
if(sta==0) break;
}
if(num>=5) return true;//撇
num=-1;

for(i=0,j=0;i<5&&j<5;)
{
sta=0;
if((point.y-i)>=0&&(point.x-i)>=0&&n_map[point.y-i][point.x-i]==type)//上
{
++sta;
++num;
++i;
}
if((point.y+j) {
++sta;
++num;
++j;
}
if(sta==0) break;
}
if(num>=5) return true;//

return false;
}
//n_map[][]为棋盘 如果值为1 表示为黑方,-1表示白方
如果想源码的话,702477275@qq.com这是我的邮箱。