#include <stdio.h>
#include<getch.h>
#include<stdlib.h>
char board[15][15];
int flag=1; //用于交换棋子
void printboard(void);
void play(int x,int y);
int judge(void);
int main(int argc,const char* argv[])
{
int i,j,x=7,y=7;
for(i=0;i<15;i++)
{
for(j=0;j<15;j++) board[i][j]='*';
}
for(;;)
{
system("clear");
printboard();
if(judge()==1)
{
printf("黑棋胜\n");break;
}
else if(judge()==-1)
{
printf("白棋胜\n");break;
}
if(flag==1) printf("输入黑棋#位置");
else printf("输入白棋$位置");
printf("\33[%d;%dH",x+1,(y+1)*2);
switch(getch())
{
case 183:case 119:x>0&&x--;break;//光标上移
case 184:case 115:x<14&&x++;break;//光标下移
case 185:case 100:y<14&&y++;break;//光标右移
case 186:case 97:y>0&&y--;break;//光标左移
case 10:case 32:play(x,y);break;//在当前位置下棋
}
}
}
void printboard(void) //打印棋盘
{
int i,j;
for(i=0;i<15;i++)
{
for(j=0;j<15;j++)
{
printf(" %c",board[i][j]);
}
printf("\n");
}
}
void play(int x,int y) //下棋
{
int result;
if(board[x][y]=='*')
{
if(flag==1)
{
board[x][y]='#';flag=-flag;
}
else if(flag==-1)
{
board[x][y]='$';flag=-flag;
}
}
}
int judge(void) //判断是否获胜
{
int x,y;
for(x=0;x<15;x++)
{
for(y=0;y<15;y++)
{
if(board[x][y]==0) continue;
else if(
(board[x][y]==board[x][y+1]&&board[x][y]==board[x][y+2]&&board[x][y]==board[x][y+3]&&board[x][y]==board[x][y+4])||//判断横
(board[x][y]==board[x+1][y]&&board[x][y]==board[x+2][y]&&board[x][y]==board[x+3][y]&&board[x][y]==board[x+4][y])||//判断纵
(board[x][y]==board[x-1][y+1]&&board[x][y]==board[x-2][y+2]&&board[x][y]==board[x-3][y+3]&&board[x][y]==board[x-4][y+4])||//判断右斜
(board[x][y]==board[x+1][y+1]&&board[x][y]==board[x+2][y+2]&&board[x][y]==board[x+3][y+3]&&board[x][y]==board[x+4][y+4]))//判断左斜
{
if(board[x][y]=='#') return 1;
else if(board[x][y]=='$') return -1;
}
else continue;
}
}
return 0;
}
你要和我来一盘五子棋嘛( •̀ ω •́ )✧
最新推荐文章于 2023-07-26 23:03:14 发布