0

我对正在尝试学习的 Snake 游戏中的 do while 功能感到困惑。此代码在随机 div 中生成一个新苹果。从我在这里读到的内容,它说只要正方形确实包含“蛇”类,然后将“苹果”类添加到随机生成的正方形中。但我认为情况正好相反,因为当一个正方形有“蛇”类时,你不希望生成一个苹果。我确定我完全误解了这一点,请帮助!

function generateApples() {
    do {
        //generate a random number
        appleIndex = Math.floor(Math.random() * squares.length)
    } while (squares[appleIndex].classList.contains('snake'))
    squares[appleIndex].classList.add('apple')
}
generateApples()
4

1 回答 1

1

但我认为情况正好相反,因为当一个正方形有“蛇”类时,你不希望生成一个苹果。

这就是代码的逻辑正在做的事情。

如果选择的随机方块是蛇的一部分:

} while (squares[appleIndex].classList.contains('snake'))

那么这是不可取的,所以循环重复 - 一次又一次,直到条件不再满足。

一旦条件不再满足,你就会知道随机方格classList不包含snake,并且可以在其中添加一个苹果。

你可以把它想象成

do {
  // stuff
} while (retryCondition);

重复循环 whileretryCondition为真,仅停止循环一次retryCondition为假。

于 2021-08-08T04:52:40.230 回答