如果陈述无法确定井字游戏的获胜者

时间:2020-11-07 13:26:16

标签: javascript arrays reactjs object if-statement

我对代码中的“ if statemenet”有一个小问题。我真的不明白为什么这不能正常工作。好的,所以要完成我的井字游戏,我只需要编写一个函数即可确定游戏的获胜者。这就是问题所在。我有 Squares-object javascript数组,其中包含对象,并且处于状态。这个带有对象的数组用于在我的游戏板上创建一个正方形网格,还用于其他一些事情,例如检查正方形字段是否已满,在单击的suqares上创建X和O等。

这里是:

export let squares = [
    {
        id:'sq1',
        content:''
    },
    {
        id:'sq2',
        content:''
    },
    {
        id:'sq3',
        content:''
    },
    {
        id:'sq4',
        content:''
    },
    {
        id:'sq5',
        content:''
    },
    {
        id:'sq6',
        content:''
    },
    {
        id:'sq7',
        content:''
    },
    {
        id:'sq8',
        content:''
    },
    {
        id:'sq9',
        content:''
    },
];

正如我所说,由于有了这个阵列,我可以在棋盘游戏上创建一个正方形网格,并且每个正方形从左到右都有自己的ID(sq1,sq2,sq3等)。现在,当我单击以id为SQ2的正方形说,然后在存储此sq2属性的对象中,有一个content属性,该属性根据另一个状态为playerTurn状态用“ X”或“ O”填充。如果玩家回合为1,则输入“内容” X;如果玩家回合为2,则输入“ O”。这工作正常。我正在用console.log进行检查。 所以说到重点了……我想使用“ if语句”来选择游戏的获胜者:

        if(squares[0].content && squares[1].content && squares[2].content  === 'X') {
            console.log('winn');
        }

那里有些奇怪的事,我无法弄清楚。因此,在此if语句中,我将必须满足的多个条件放入console.log('winn')。因此,如果ID为sq1 sq2和sq3的正方形填充有“ X”(内容:“ X”),那么我们应该在控制台中看到“ winn”。还有一个问题。当我在这些字段上输入X时,就可以正常工作,但是...如果我在板上的任何位置都放了更多的“ X”和“ O”,则无论如何,“ if statement”在控制台中都会显示“ winn”,即使我指示的字段不包含XXX,但包含XOX。 为什么会这样?

2 个答案:

答案 0 :(得分:2)

您是否要检查所有正方形是否均为X?然后,您的if语句必须像这样

if(squares[0].content === 'X' && squares[1].content === 'X' && squares[2].content  === 'X') {
            console.log('winn');
        }

答案 1 :(得分:1)

那呢?

   if(squares[0].content === 'X' && squares[1].content === 'X' && squares[2].content  === 'X')   {
        console.log('winn PLAYER 1');
    }

它检查正方形的第一行是否包含'X'。

这是你想做的吗?