- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
试图确定谁在井字游戏中获胜,我是编程新手。目前让用户在仅输入 1 个 X 或 O 输入后就赢了。输入必须使用 2 个整数、行和列输入。非常感谢任何帮助!
#include <stdio.h>
#include <stdlib.h>
void drawBoard(char board[][3])
{
int rows, columns;
for ( rows = 0 ; rows < 3 ; rows++ )
{
for ( columns = 0 ; columns < 3 ; columns++ )
{
if(board[rows][columns]){
printf( "|%c", board[rows][columns] );
}else{
printf("| ");
}
}
printf("|\n");
}
}
int main()
{
char game[3][3]={{0}};
int totalEntry =0,row,column;
char value;
while(totalEntry<=9){
printf("Please choose x or o: ");
scanf("%c",&value);
getchar();
printf("Enter row number: ");
scanf("%d",&row);
getchar();
printf("Enter Column number: ");
scanf("%d",&column);
getchar();
game[row][column] = value;
drawBoard(game);
if((game[0][0] == game[0][1]) && (game[0][1] == game[0][2]) && game[0][0] != 'x')
if((game[1][0] == game[1][1]) && (game[1][1] == game[1][2]) && game[1][0] != 'x')
if((game[2][0] == game[2][1]) && (game[2][1] == game[2][2]) && game[2][0] != 'x')
if((game[0][0] == game[1][0]) && (game[1][0] == game[2][0]) && game[0][0] != 'x')
if((game[0][1] == game[1][1]) && (game[1][1] == game[2][1]) && game[0][1] != 'x')
if((game[0][2] == game[1][2]) && (game[1][2] == game[2][2]) && game[0][2] != 'x')
if((game[0][0] == game[1][1]) && (game[1][1] == game[2][2]) && game[0][0] != 'x')
if((game[2][0] == game[1][1]) && (game[1][1] == game[0][2]) && game[2][0] != 'x')
printf("User x has won!");
if((game[0][0] == game[0][1]) && (game[0][1] == game[0][2]) && game[0][0] != 'o')
if((game[1][0] == game[1][1]) && (game[1][1] == game[1][2]) && game[1][0] != 'o')
if((game[2][0] == game[2][1]) && (game[2][1] == game[2][2]) && game[2][0] != 'o')
if((game[0][0] == game[1][0]) && (game[1][0] == game[2][0]) && game[0][0] != 'o')
if((game[0][1] == game[1][1]) && (game[1][1] == game[2][1]) && game[0][1] != 'o')
if((game[0][2] == game[1][2]) && (game[1][2] == game[2][2]) && game[0][2] != 'o')
if((game[0][0] == game[1][1]) && (game[1][1] == game[2][2]) && game[0][0] != 'o')
if((game[2][0] == game[1][1]) && (game[1][1] == game[0][2]) && game[2][0] != 'o');
printf("User o has won!");
break;
}
return 0;
}
最佳答案
我会使用像下面这样的东西,使用循环。请注意,由于棋盘被初始化为零,因此将获胜者分配到仍然为零的棋盘位置意味着即使测试所有相等的通过也找不到获胜者。
//declare this outside the main while-loop:
char winner=0;
for(i=0;i<3 && !winner;i++) {
if(game[i][0]==game[i][1] && game[i][1]==game[i][2])
winner=game[i][0]; // across
else if(game[0][i]==game[1][i] && game[1][i]==game[2][i])
winner=game[0][i]; // down
}
if( !winner && ( game[0][0]==game[1][1] && game[1][1]==game[2][2] ||
game[0][2]==game[1][1] && game[1][1]==game[2][0] ) )
winner = game[1][1]; // diagonal
if(winner) {
printf( "Winner is %c!\n",winner );
break;
}
关于c - c中的井字游戏,试图确定谁赢了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024153/
使用掷骰子游戏中的 10,000 次模拟来计算获胜概率 (wins/(wins + Loss))。下面是双骰子游戏的方法: public class CrapsGame { public st
我想制作一个程序作为检查网,如果地址向上,则返回 1;如果地址向下,则返回 0。代码如下: #include #include #include #pragma comment(lib, "ws
我正在尝试使用 Win API ReadConsole(...),我想传入一个分隔符字符以停止来自控制台的输入。下面的代码有效,但它只会停止读取 \r\n 上的输入。例如,我希望它停止读取 '.' 上
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我想在 d3.js 中制作一个条形图,每个项目或行都有正条和负条,如下所示: 它有点像谷歌金融“行业摘要”图表(http://google.com/finance) 任何人都可以指出我这种图表的 d3
尝试根据 GF 和 GA 创建一个新列“Results”。想知道如何通过定义函数和条件语句来做到这一点。以下是我对一行的初步尝试,但无法弄清楚如何将其应用于所有行,非常感谢您的帮助! 日期地点对手GF
过去,我通过 wpf 使用 mvvmlight 并取得了一定程度的成功。我最近看到了 Caliburn Micro,但我想知道是否有人对此有任何经验。 我看到了 Caliburn Micro 的网站,
我正在尝试将 FFMPEG(我实际上只是在寻找 FFProbe,它包含在 FFMPEG 工具中)编译为适用于 MacOS X、Linux 和可能的 Windows 的独立应用程序。对于独立,我的意思是
你能告诉我你是如何让 PartCover 在 VS2008 上运行并赢得 7 x64 的吗?基于此帖子 How do I run PartCover in x64 windows ,我跑了 c:\Pr
我要抓: 窗口调整大小/移动/最小化/最大化/关闭消息。 鼠标点击和键盘按下。 当用户按 enter 或 dblclick 执行任何程序时。 (如果可能的话?) 这应该与键锁程序的工作方式相同:如果您
我正在创建一个实用软件,其中存储了 PC 的所有详细信息,我设法找到了一个包含我想要的所有详细信息的程序“msinfo32”。 目前的问题是我不知道如何尽快在软件中获取这些信息。 请帮我写一段代码 提
我需要我的一个 .exe 文件在没有 UAC 提示的情况下始终以管理员身份运行。我的程序将与安装程序一起安装,它将有一次管理员权限,我需要在这个安装程序中执行这样的步骤,我的 exe 将始终以管理员身
这个错误发生在前一段时间,2011年 http://cygwin.com/ml/cygwin/2013-11/msg00021.html 根据我在这篇文章和其他一些文章中所读到的内容,我看到他们写了一
关于 tel 协议(protocol)处理程序:除了在窗口 10 下,我的应用程序工作正常。在窗口 10 下需要哪些额外的注册表项才能为 tel 协议(protocol)注册应用程序(因此我的应用程序
我是一名优秀的程序员,十分优秀!