2021-5-27WHUT mooc 7-3 TicTacToe游戏--胜负判定 个人题解
Posted Zack North
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-5-27WHUT mooc 7-3 TicTacToe游戏--胜负判定 个人题解相关的知识,希望对你有一定的参考价值。
好像又是一个新的原创题,好像看到没有题解,我就小试牛刀写一个题解。【轻喷】
题目内容:7-3 TicTacToe游戏--胜负判定 (15 分)
井字棋是一种在3x3格子上进行的连珠游戏,和五子棋比较类似,由于棋盘一般不画边框,格线排成井字故得名。
游戏规则:由分别代表O和X的两个游戏者轮流在格子里留下标记。由最先在任意一条直线上成功连接三个标记的一方获胜。(摘抄自百度百科)
读入一个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!
非常有趣的一个题目了,发现whut的mooc就喜欢原创一些游戏有关的代码,比如上周的2048。
解决思路:
1、判断同一行三个字符是否相同,只要字符数组的第i行的[i][0],[i][1],[i][2]三个相等就可以
2、判断同一列三个字符是否相同,只要字符数组第i列的[0][i],[1][i],[2][i]三个都相等就可以
3、判断斜对角,只有两种可能。
1)[0][0],[1][1],[2][2]
2)[0][2],[1][1],[2][0]
判断这两种的三个是否相等。
注意点:
1、如果有两个人连成一条直线则no one win(最后一个点过不了)
2、有可能三个相等但是是'.',虽然连成一条直线但是既不是x也不是o
上代码:
#include<stdio.h>
int main()
{
char a[4][4];
int i,xflag=0,oflag=0;//xflag=0代表x没赢,xflag=1代表x赢
for(i=0;i<3;i++)//常规输入
{
scanf("%s",a[i]);
}
for(i=0;i<3;i++)//判断行是否三个相同,因此只需要在一行内看
{
if((a[i][0]==a[i][1])&&(a[i][1]==a[i][2])&&(a[i][0]==a[i][2]))//判断行是否三个相同
{
if(a[i][0]!='.')//不能是点赢
{
if(a[i][0]=='X')//x赢了
xflag=1;//x赢
else//否则o赢
oflag=1;
}
}
}
for(i=0;i<3;i++)//判断列是否三个相同,因此只需要在一列内看
{
if((a[0][i]==a[1][i])&&(a[1][i]==a[2][i])&&(a[0][i]==a[2][i]))//判断列是否三个相同
{
if(a[0][i]!='.')//不能是点赢
{
if(a[0][i]=='X')//x赢了
xflag=1;//x赢
else//否则o赢
oflag=1;
}
}
}
if(((a[0][0]==a[1][1])&&(a[1][1]==a[2][2])&&(a[0][0]==a[2][2]))||((a[0][2]==a[1][1])&&(a[1][1]==a[2][0])&&(a[0][2]==a[2][0])))//对角相等只有两种可能,直接检验
{
if(a[1][1]!='.')//不能是点赢
{
if(a[1][1]=='X')//x赢了
xflag=1;//x赢
else//否则o赢
oflag=1;
}
}
if((xflag==1)&&(oflag==0))//x赢o未赢
printf("X win!\\n");//xwin
else if((xflag==0)&&(oflag==1))//o赢x未赢
printf("O win!\\n");//owin
else
printf("No one win!\\n");//都没赢
return 0;
}
谢谢!
以上是关于2021-5-27WHUT mooc 7-3 TicTacToe游戏--胜负判定 个人题解的主要内容,如果未能解决你的问题,请参考以下文章
2021-5-27WHUT mooc 7-3 TicTacToe游戏--胜负判定 个人题解