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/

10-09 09:40