公式使2D数组索引确定为替换C中数组内部的值(Tic-Tac-Toe)

  • 本文关键字:数组 内部 Tic-Tac-Toe 2D 索引 替换 c
  • 更新时间 :
  • 英文 :


所以我正在用C为2名玩家编写一个Tic-tac-toe游戏,但我不知道该输入什么公式,所以当我第二次打印数组时,"X"或"O"取代了之前的数字,这是程序:

#include <stdio.h>
void main(){
char plateau[3][3]={
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
int t=0;
char choix1;
char choix2;
int i , j , k;
printf("-------------------------------------------------------------------n");
for(t=0;t<9;t++){
if(t%2==0){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
printf(" %c ",plateau[i][j] );
}
printf("n");
}

printf("Turn > Player n1 what case do you want to play?");
scanf(" %c",&choix1);
printf("n");
int i=;
int j=;
plateau[i][j]='X';
}

if(t%2!=0){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
printf(" %c ",plateau[i][j] );
}
printf("n");
}
printf("nTurn > Player n2 what case do you want to play?");
scanf(" %c",&choix2);
printf("n");
}
}
}

所以这个

int i=;
int j=;
plateau[i][j]='X';
}

就像我需要一个公式,对于int i,如果choix1是{1||2|3},那么我将是0,如果choex1是{4||5||6},那么它将是1。j也是一样。

这就像它应该是什么样子(请注意,我预先确定了X的位置,因为它不是来自输入(:

1  2  3
4  5  6
7  8  9
Turn > Player n1 what case do you want to play?1
1  2  3
4  5  6
X  8  9
Turn > Player n2 what case do you want to play?^C

我试图用if语句来做这件事,但没有成功,这是我的尝试:

printf("Turn > Player n1 what case do you want to play?");
scanf(" %c",&choix1);
printf("n");
if(choix1 ==1||choix1==2||choix1==3){
int i=0;}
if(choix1 ==4||choix1==5|choix1==6){
int i=1;}
if(choix1 ==7||choix1==8||choix1==9){
int i=2;}
if(choix1 ==1||choix1==4||choix1==7){
int j=0;}
if(choix1 ==2||choix1==5|choix1==8){
int j=1;}
if(choix1 ==3||choix1==6||choix1==9){
int j=2;}
plateau[i][j]='X';
}

若有人能帮助我或引导我找到答案,我将不胜感激。

您的尝试非常接近成功。您的主要问题是额外编写了int

编写int i=0;时,这是名为i变量的定义,该变量仅在定义它的块内可见。

如果您想更改现有变量的值(也称为"为变量赋值"(,只需执行以下操作:

i = 0;

此外,我强烈建议您清理缩进和空白。

在你接受这个建议后,你的代码看起来像:

int i = 0, j = 0;
if (choix1 == 1 || choix1 == 2 || choix1 == 3) {
i = 0;
}
...
plateau[i][j] = 'X';

你的if语句的大列表应该可以正常工作。但是,如果你想在工作后帮助简化它,你可以在代码审查上询问。

最新更新