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

    评论

报告相同问题?

悬赏问题

  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化