c/c++语言开发共享利用c语言实现在一个3*3棋盘游戏

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

在一个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

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐