所以我正在用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语句的大列表应该可以正常工作。但是,如果你想在工作后帮助简化它,你可以在代码审查上询问。