当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 井字游戏
帖子发表于 : 2016-07-09 22:40 

注册: 2015-06-19 21:16
帖子: 40
送出感谢: 26
接收感谢: 0 次
井字游戏就是在一个九宫格内谁先连成三个(横 竖 斜都行),谁就赢
本着代码简洁的目标就用for写了玩家输入落子点的那几行代码(虽然这让玩家在玩的时候有点别扭,但起码代码看着简洁一些)
我也是新手,大家可以提意见(我已经自己玩了几次了,没啥问题)
代码:
//井字棋游戏
#include<stdio.h>
int main()
{
   int huihe=0,winner=0,choice,row,column;
   char board[3][3]={'1','2','3','4','5','6','7','8','9'};      //棋盘
   printf("游戏开始\t玩家1是A\t玩家2是B\n\n");
   while(1)
   {
      ++huihe;
      printf(" %c | %c | %c\n",board[0][0],board[0][1],board[0][2]);
      printf("---+---+---\n");
      printf(" %c | %c | %c\n",board[1][0],board[1][1],board[1][2]);
      printf("---+---+---\n");
      printf(" %c | %c | %c\n",board[2][0],board[2][1],board[2][2]);
      for(int i=1;i<=2;i++)
      {
         printf("请玩家%d走棋\n",i);
         scanf("%d",&choice);
         choice-=1;
         row=(int)choice/3;
         column=(int)choice%3;
         board[row][column]=(i==1?'A':'B');
         if(huihe>=3)
         {
            for(int i=0;i<=2;i++)
               if(board[i][0]==board[i][1]&&board[i][1]==board[i][2])
                  if(board[i][0]=='A')
                     winner=1;
                  else
                     winner=2;
            for(int j=0;j<=2;j++)
               if(board[0][j]==board[1][j]&&board[1][j]==board[2][j])
                  if(board[0][j]=='A')
                     winner=1;
                  else
                  winner=2;
            if(board[0][0]==board[1][1]&&board[1][1]==board[2][2])
               if(board[0][0]=='A')
                  winner=1;
               else
                  winner=2;
            if(board[0][2]==board[1][1]&&board[1][1]==board[2][0])
               if(board[0][2]=='A')
                  winner=1;
               else
                  winner=2;
         }
         if(winner!=0)
            break;
      }
      if(winner!=0)
      break;
   }
   printf("恭喜玩家%d获胜!!\n",winner);
}


最后由 hanis_ghost 编辑于 2016-07-10 7:33,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 井字游戏
帖子发表于 : 2016-07-10 2:17 
头像

注册: 2008-09-18 13:11
帖子: 2741
送出感谢: 1
接收感谢: 446
还说代码没问题
1、
代码:
winner==2;

2、没有防止在同一个位置重复落子的机制
3、没有处理和棋情况



_________________
评价: 3.7% hanis_ghost
 
页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译