利用c语言实现在一个3*3棋盘游戏

来源:互联网 时间:1970-01-01


在一个3*3矩阵中下棋,如有一方连续三颗棋子在一条直线上,则获胜。注:下棋时,输入的是棋子所对应矩阵的具体坐标。
具体代码如下:

#include<stdio.h>#include<stdlib.h>#include<time.h>char a[3][3]={ 0 };int size =9;void qipan() //打印棋盘{int i=0,j=0;printf(" | | /n");for(i=0;i<3;i++){printf("_%c_|_%c_|_%c_/n",a[i][0],a[i][1],a[i][2]);if(i<2)printf(" | | /n");}}void wjxq()//玩家下棋{int m=0,n=0;printf("玩家棋子为@: ");//输入的是旗子所对应的坐标scanf("%d %d",&m,&n);if(m<1 || m>3 || n<1 || n>3 || a[m-1][n-1]!=' '){ printf("你输出的坐标位置不合法!");wjxq();}else{a[m-1][n-1]='@';size=size-1;} }void dn()//电脑下棋{int m=0,n=0;printf("电脑的棋子#:/n");srand(time(NULL));m=rand()%3;n=rand()%3;while(a[m][n]!=' ' ){m=rand()%3;n=rand()%3;}a[m][n]='#';size=size-1;}int winner()//判断获胜者{if((a[0][0]== a[0][1] && a[0][1]==a[0][2] && a[0][2]=='@')||(a[1][0]==a[1][1] && a[1][1]==a[1][2] && a[1][2]=='@')||(a[2][0]==a[2][1] && a[2][1]==a[2][2] && a[2][2]=='@')||(a[0][0]==a[1][0] && a[1][0]==a[2][0] && a[2][0]=='@')||(a[0][1]==a[1][1] && a[1][1]==a[2][1] && a[2][1]=='@')||(a[0][2]==a[1][2] && a[1][2]==a[2][2] && a[2][2]=='@')||(a[0][0]==a[1][1] && a[1][1]==a[2][2] && a[2][2]=='@')||(a[0][2]==a[1][1] && a[1][1]==a[2][0] && a[2][0]=='@'))return 1;//玩家获胜else if((a[0][0]==a[0][1] && a[0][1]==a[0][2] && a[0][2]=='@')||(a[1][0]==a[1][1] && a[1][1]==a[1][2] && a[1][2]=='@')||(a[2][0]==a[2][1] && a[2][1]==a[2][2] && a[2][2]=='@')||(a[0][0]==a[1][0] && a[1][0]==a[2][0] && a[2][0]=='@')||(a[0][1]==a[1][1] && a[1][1]==a[2][1] && a[2][1]=='@')||(a[0][2]==a[1][2] && a[1][2]==a[2][2] && a[2][2]=='@')||(a[0][0]==a[1][1] && a[1][1]==a[2][2] && a[2][2]=='@')||(a[0][2]==a[1][1] && a[1][1]==a[2][0] && a[2][0]=='@'))return 0;//玩家输了,即电脑赢了else if(size==0)return -1;//平局elsereturn 2;}int main(){int i=0,j=0;//将数组初始化为空for(i=0;i<3;i++){for(j=0;j<3;j++){a[i][j]=' ';}}while(1){qipan();if(winner()==-1||winner()==0||winner()==1){break;}wjxq();qipan();if(winner()==-1||winner()==0||winner()==1){break;}dn();}if(winner()==1){printf("玩家获胜!");}else if(winner()==0){printf("玩家输了!");}else{printf("平局");}system("pause");return 0;}

 





相关阅读:
Top