#include <iostream>
#include<stdio.h>
#include <ctype.h>
#include <time.h>
#include <string.h>
#include <windows.h>
using namespace std;
int qi[8][8];
#define SIZE 8
void display(char board[][SIZE])
{
int row=0;
int col=0;
char col_label='a';
printf("\n ");
for(col=0;col<SIZE;col++)
printf(" %c",col_label+col);
printf("\n");
for(row=0;row<SIZE;row++)
{
printf(" +");
for(col=0;col<SIZE;col++)
printf("---+");
printf("\n%2d|",row+1);
for(col=0;col<SIZE;col++)
printf(" %c |",board[row][col]);
printf("\n");
}
printf(" +");
for(col=0;col<SIZE;col++)
printf("---+");
printf("\n");
}//布置棋盘
int valid_moves(char board[][SIZE],int moves[][SIZE],char player)//查找
{
int rowdelta=0;
int coldelta=0;
int row=0;
int col=0;
int x=0;
int y=0;
int no_of_moves=0;
char opponent=(player=='o')?'*':'o';//player与opponent符号不同
for(row=0;row<SIZE;row++)
for(col=0;col<SIZE;col++)
moves[row][col]=0;
for(row=0;row<SIZE;row++)
for(col=0;col<SIZE;col++)//查找棋盘上所有player可以下的地方
{
if(board[row][col]!=' ')
continue;
for(rowdelta=-1;rowdelta<=1;rowdelta++)
for(coldelta=-1;coldelta<=1;coldelta++)//查找周围8个方向
{
if(row+rowdelta<0||row+rowdelta>=SIZE||
col+coldelta<0||col+coldelta>=SIZE||
(rowdelta==0&&coldelta==0))
continue;
if(board[row+rowdelta][col+coldelta]==opponent)//与player不同的符号找到了
{
x=row+rowdelta;
y=col+coldelta;
for(;;)//接着判定往下的方向
{
x+=rowdelta;
y+=coldelta;
if(x<0||x>=SIZE||y<0||y>=SIZE)
break;
if(board[x][y]==' ')
break;
if(board[x][y]==player)//有player符号满足条件,player可以下
{
moves[row][col]=1;//查找全部可以下的地方并变为1
no_of_moves++;
break;
}
}
}
}
}
return no_of_moves;
}
void make_move(char board[][SIZE],int row,int col,char player)//改变棋子
{
int rowdelta=0;
int coldelta=0;
int x=0;
int y=0;
char opponent=(player=='o')?'*':'o';
board[row][col]=player;
for(rowdelta=-1;rowdelta<=1;rowdelta++)//查找棋子8个方向
for(coldelta=-1;coldelta<=1;coldelta++)
{
if(row+rowdelta<0||row+rowdelta>=SIZE||
col+coldelta<0||col+coldelta>=SIZE||
(rowdelta==0&&coldelta==0))
continue;
if(board[row+rowdelta][col+coldelta]==opponent)
{
x=row+rowdelta;
y=col+coldelta;
for(;;)
{
x+=rowdelta;
y+=coldelta;
if(x<0||x>=SIZE||y<0||y>=SIZE)
break;
if(board[x][y]==' ')
break;
if(board[x][y]==player)
{
while(board[x-=rowdelta][y-=coldelt
#include<stdio.h>
#include <ctype.h>
#include <time.h>
#include <string.h>
#include <windows.h>
using namespace std;
int qi[8][8];
#define SIZE 8
void display(char board[][SIZE])
{
int row=0;
int col=0;
char col_label='a';
printf("\n ");
for(col=0;col<SIZE;col++)
printf(" %c",col_label+col);
printf("\n");
for(row=0;row<SIZE;row++)
{
printf(" +");
for(col=0;col<SIZE;col++)
printf("---+");
printf("\n%2d|",row+1);
for(col=0;col<SIZE;col++)
printf(" %c |",board[row][col]);
printf("\n");
}
printf(" +");
for(col=0;col<SIZE;col++)
printf("---+");
printf("\n");
}//布置棋盘
int valid_moves(char board[][SIZE],int moves[][SIZE],char player)//查找
{
int rowdelta=0;
int coldelta=0;
int row=0;
int col=0;
int x=0;
int y=0;
int no_of_moves=0;
char opponent=(player=='o')?'*':'o';//player与opponent符号不同
for(row=0;row<SIZE;row++)
for(col=0;col<SIZE;col++)
moves[row][col]=0;
for(row=0;row<SIZE;row++)
for(col=0;col<SIZE;col++)//查找棋盘上所有player可以下的地方
{
if(board[row][col]!=' ')
continue;
for(rowdelta=-1;rowdelta<=1;rowdelta++)
for(coldelta=-1;coldelta<=1;coldelta++)//查找周围8个方向
{
if(row+rowdelta<0||row+rowdelta>=SIZE||
col+coldelta<0||col+coldelta>=SIZE||
(rowdelta==0&&coldelta==0))
continue;
if(board[row+rowdelta][col+coldelta]==opponent)//与player不同的符号找到了
{
x=row+rowdelta;
y=col+coldelta;
for(;;)//接着判定往下的方向
{
x+=rowdelta;
y+=coldelta;
if(x<0||x>=SIZE||y<0||y>=SIZE)
break;
if(board[x][y]==' ')
break;
if(board[x][y]==player)//有player符号满足条件,player可以下
{
moves[row][col]=1;//查找全部可以下的地方并变为1
no_of_moves++;
break;
}
}
}
}
}
return no_of_moves;
}
void make_move(char board[][SIZE],int row,int col,char player)//改变棋子
{
int rowdelta=0;
int coldelta=0;
int x=0;
int y=0;
char opponent=(player=='o')?'*':'o';
board[row][col]=player;
for(rowdelta=-1;rowdelta<=1;rowdelta++)//查找棋子8个方向
for(coldelta=-1;coldelta<=1;coldelta++)
{
if(row+rowdelta<0||row+rowdelta>=SIZE||
col+coldelta<0||col+coldelta>=SIZE||
(rowdelta==0&&coldelta==0))
continue;
if(board[row+rowdelta][col+coldelta]==opponent)
{
x=row+rowdelta;
y=col+coldelta;
for(;;)
{
x+=rowdelta;
y+=coldelta;
if(x<0||x>=SIZE||y<0||y>=SIZE)
break;
if(board[x][y]==' ')
break;
if(board[x][y]==player)
{
while(board[x-=rowdelta][y-=coldelt