int main (void)
{
char tttarray[3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
int turn = 0,i,j,loc;
char XO;
while(turn<=9)
{
printf("Enter (x) or (o): ");
scanf("%c",&XO);
getchar();
printf("Enter number: ");
scanf("%d", &loc);
j = (loc - 1)%3;
i = (loc - 1)/3;
if(tttarray[i][j] == 'x' || 'o')
{
return(0);
printf("That spot has been taken!\n");
}
tttarray[i][j] = XO;
printArray(tttarray);
}
}
为了方便起见,我仅显示主要代码。我的问题是这部分:
if(tttarray[i][j] == 'x' || 'o')
{
return(0);
printf("That spot has been taken!\n");
}
这是因为似乎总是如此,这会阻止播放器在其中放置
'x'
或'o'
。我在上面的代码中缺少什么吗?如何防止用户进入占用空间? 最佳答案
您不能像以前那样链接逻辑OR运算符。你需要改变
if(tttarray[i][j] == 'x' || 'o')
至
if((tttarray[i][j] == 'x') || (tttarray[i][j] =='o'))
就是说,在
return
语句之后的语句没有任何意义。控制将永远不会达到printf()
条件内的if
。也许您想要使用printf()
语句continue;
按此顺序。
关于c - 井字游戏可防止用户进入拍摄地点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34322067/