qq_24432057 2015-10-09 14:14 采纳率: 42.9%
浏览 1705

c语言圈叉游戏的问题!!!

#include
int main(void)
{
int player = 0; //游戏玩家1和玩家2
int winner = 0; //胜利玩家号码
int choice = 0; //选择方格
unsigned int row = 0; //定义行
unsigned int column = 0; //定义列

char board  [3][3] = {
                     {'1','2','3'},
                     {'4','5','6'},
                     {'7','8','9'}
                                }; 
 for(unsigned int i = 0; i < 9 && winner == 0 ;++i)
 {
    printf("\n");
     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]);

     player = i%2 + 1;                          //选择玩家
    do
     {
        printf("player %d,please enter a valid square number for where you want to place your %c\n",player,(player == 1) ? 'X':'O');
        scanf("%d",&choice);

        row = --choice/3;                       //得到行的索引值 
        column = choice % 3;                    //得到列的索引值 
   }while(choice < 0 || choice > 8 || board[row][column] > '9');
        board[row][column] = (player == 1) ? 'X':'O'; 
    if( (board[0][0] == board[1][1] && board[0][0] == board[2][2]) ||
            (board[0][2] == board[1][1] && board[0][2] == board[2][0] ) )
        winner == player;

    else
    {
        for(unsigned int line = 0; line <= 2; ++line)
        {
            if((board[line][0] == board[line][1] && board[line][0] == board[line][2])||
            (board[0][line] == board[1][line] && board[0][line] == board[2][line]))
            winner == player; 
         } 
     } 
  } 
  printf("\n");
  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]);
  if(winner)
  printf("\nconggratulations,player %d,YOU ARE THE WINNER!\n",winner);
  else
  printf("\nHow boring , it is a draw\n"); 

  return 0;

}

<>这段程序有问题,怎么做都赢不了,不知道什么地方出错了!另外do while 循环在这里难以理解特别是--choice/3那里,其次是if else这一堆数组是什么意思?忘指导

  • 写回答

1条回答 默认 最新

  • threenewbee 2015-10-09 21:36
    关注

    这种程序充满陋习,不值得你学习和模仿。

    http://download.csdn.net/detail/w1445593766/6581203

    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB yalmip 可转移负荷的简单建模出错,如何解决?
  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?