PTA 7-13 TicTacToe游戏--胜负判定(正向简单思考)

通过这道题,可以重新思考%c与%s在输入字符时的不同点

井字棋是一种在3x3格子上进行的连珠游戏,和五子棋比较类似,由于棋盘一般不画边框,格线排成井字故得名。

游戏规则:由分别代表O和X的两个游戏者轮流在格子里留下标记。由最先在任意一条直线上成功连接三个标记的一方获胜。(摘抄自百度百科)

QQ截图20210516153608.jpg

读入一个3X3的二维数组,数组元素为'X'表示下X,元素为'O'表示下O,数组元素为'.'(英文符号“点”)表示未下棋,现编写程序进行当前胜负的判断,如果X方胜,则显示"X win!",如果O方胜,则显示"O win!",如果无人获胜,则显示"No one win!"。

输入格式:

读入一个3X3的二维数组,数组元素为'X'表示下X,元素为'O'表示下O,数组元素为'.'(英文符号“点”)表示未下棋。

输出格式:

若X方胜,则显示"X win!";若O方胜,则显示"O win!";若无人获胜,则显示"No one win!"。

输入样例1:

X.O
OX.
O.X

输出样例2:

X win!

输入样例2:

O.O
XX.
X..

输出样例2:

No one win!

注意,本题的出错点在于输入字符串到数组中时对回车符号的忽略,导致错误。

在输入字符串时,我们有两种选择

1.0(%c输入,需要注意回车符)

#include<stdio.h>
int main(){
    char a[3][3];
    int i,x=0,o=0;
    for(i=0;i<3;i++)
        scanf("%c",&a[0][i]);
    getchar();
        for(i=0;i<3;i++)
        scanf("%c",&a[1][i]);
    getchar();                                              //用两个getchar()来吸收回车符
        for(i=0;i<3;i++)
        scanf("%c",&a[2][i]);                               //输入字符串
    for(i=0;i<3;i++){
        if(a[i][0]=='X'&&a[i][1]=='X'&&a[i][2]=='X')
            x++;
        else if(a[0][i]=='X'&&a[1][i]=='X'&&a[2][i]=='X')
            x++;
        else if(a[i][0]=='O'&&a[i][1]=='O'&&a[i][2]=='O')
            o++;
        else if(a[0][i]=='O'&&a[1][i]=='O'&&a[2][i]=='O')   //行或列连成获胜情况
            o++;
        else if(a[0][0]=='X'&&a[1][1]=='X'&&a[2][2]=='X')
            x++;
        else if(a[0][0]=='O'&&a[1][1]=='O'&&a[2][2]=='O')
            o++;
        else if(a[2][0]=='X'&&a[1][1]=='X'&&a[0][2]=='X')
            x++;
        else if(a[2][0]=='O'&&a[1][1]=='O'&&a[0][2]=='O')
            o++;}                                           //对角线连成获胜情况
    if(x==3||x==1)
        printf("X win!");
    else if(o==3||o==1)
        printf("O win!");
        else
            printf("No one win!");                          //当数字等于3时为对角线
                                                            //当数字等于1时为行或列
        return 0;
}

2.0(%s 输入,遇到回车符停止,且该回车符不进入数组中)

#include<stdio.h>
int main(){
    char a[3][3];
    int i,x=0,o=0;
    for(i=0;i<3;i++)
        scanf("%s",a[i]);                                  //输入字符串
    for(i=0;i<3;i++){
        if(a[i][0]=='X'&&a[i][1]=='X'&&a[i][2]=='X')
            x++;
        else if(a[0][i]=='X'&&a[1][i]=='X'&&a[2][i]=='X')
            x++;
        else if(a[i][0]=='O'&&a[i][1]=='O'&&a[i][2]=='O')
            o++;
        else if(a[0][i]=='O'&&a[1][i]=='O'&&a[2][i]=='O')   //行或列连成获胜情况
            o++;
        else if(a[0][0]=='X'&&a[1][1]=='X'&&a[2][2]=='X')
            x++;
        else if(a[0][0]=='O'&&a[1][1]=='O'&&a[2][2]=='O')
            o++;
        else if(a[2][0]=='X'&&a[1][1]=='X'&&a[0][2]=='X')
            x++;
        else if(a[2][0]=='O'&&a[1][1]=='O'&&a[0][2]=='O')
            o++;}                                           //对角线连成获胜情况
    if(x==3||x==1)
        printf("X win!");
    else if(o==3||o==1)
        printf("O win!");
        else
            printf("No one win!");                          //当数字等于3时为对角线
                                                            //当数字等于1时为行或列
        return 0;
}

  • 52
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Tic Tac Toe游戏中,胜负判定的规则如下: 1. 如果一行、一列或一条对角线上的三个格子都被同一个玩家占据,则该玩家获胜。 2. 如果棋盘上所有的格子都被占据,但没有任何一方获胜,则游戏结束,平局。 3. 如果游戏还没有结束,继续进行下一轮。 以上就是Tic Tac Toe游戏胜负判定规则。 ### 回答2: Tic Tac Toe游戏在判断胜负时非常简单。该游戏是一种以X和O为标志的简单球迷游戏,使用了三行和三列的井字栅格。游戏以轮流的方式进行,每个玩家都可以在棋盘上放置一个符号。第一个玩家通常使用X符号,而第二个玩家使用O符号。当有一方玩家沿着行、列或对角线放置了三个符号时,游戏就结束,该玩家胜利,否则游戏平局。 在判断游戏胜负时,我们需要考虑到三种情况:行、列和对角线。如果三个符号在同一行上,它们将构成一个行胜利;同样,如果三个符号在同一列上,它们将构成一个列胜利。如果三个符号沿着一条对角线对齐,则它们将构成一个对角线胜利。 为了进行胜负判定,我们需要在代码中使用数组来跟踪已经放置的符号,并使用if语句检查是否有任何符号在同一行、列或对角线上对齐。如果符号在任何一行、列或对角线上对齐,则它们将构成一个胜利。 如果没有任何符号沿着任何一行、列或对角线对齐,则游戏被认为是平局。 总之,在Tic Tac Toe游戏中,胜负判定非常简单直观:只需要检查符号是否沿着同一行、列或对角线对齐。如果它们对齐,那么我们就确定了游戏的获胜者。否则我们就得出了游戏的平局。 ### 回答3: Tic Tac Toe,也被称为Noughts and Crosses,是一个由两个玩家交替将“X”和“O”放入3x3网格中的游戏。这个游戏看似简单,但却蕴藏了一些策略和技巧。在游戏中,胜负判定是非常重要的一步,因为它决定了游戏的结果。 通常,判断胜负的方式是在每一步结束之后检查所有行、列、对角线是否有任意一方的标志位相同时。如果某一方在一行、一列或一条对角线上都有自己的标志位,则该方获胜。 为了更好地说明这个规则,我们可以通过以下步骤来演示: 1. 首先,我们需要确定棋盘的大小和每个玩家的标志。棋盘一般是3x3的方阵,玩家的标志可以是“X”和“O”。 2. 接下来,我们需要确定谁先下棋。如果您是第一个开始的,您可以选择放置在棋盘的中心,因为它是最容易获胜的点。 3. 接下来的步骤是交替进行。每个玩家都可以在未被占用的空位上放置它们的标志,直到其中一方获胜或所有空位都被占用。 4. 在每个步骤结束时,我们需要检查是否出现了一方的标志位出现在一行、一列或者一条对角线上。如果是,获胜方就已经确定。 需要注意的是,如果两个玩家都没有在任何一行、一列或一条对角线上放置它们的标记,那么平局即为游戏的结果。 最后, Tic Tac Toe 是一个简单而有趣的游戏,适合家庭、学校、公园和咖啡店等各种场所进行。 通过理解并掌握胜负判定的规则,您可以更好地享受这个游戏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值