在一个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;//平局 else return 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; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/606753.html