我用Python制作了一款战舰游戏。目前,游戏有一个简单的人工智能,随机猜测一个点,它还没有在董事会上猜测,试图找到两块大型战舰。我是让人工智能更聪明,给它一个模式,以遵循。要生成AI的猜测,我使用以下代码。
while X == 0 | Y == 0:
X = 0
Y = 0
guess_col = guessCol(0, size - 1)
guess_row = guessRow(0, size - 1)
# Make sure the guess follows the pattern
if (guess_col + guess_row)%2 != 1:
X = 1
# Make sure the spot has not already been guessed
if board[guess_row][guess_col] != "~":
Y = 1董事会看起来如下所示。
1 2 3 4 5 6 7 8 9
1 ~ ~ ~ ~ ~ ~ ~ ~ ~
2 ~ ~ ~ ~ ~ ~ ~ ~ ~
3 ~ ~ ~ ~ ~ ~ ~ ~ ~
4 ~ ~ ~ ~ ~ ~ ~ ~ ~
5 ~ ~ ~ ~ ~ ~ ~ ~ ~
6 ~ ~ ~ ~ ~ ~ ~ ~ ~
7 ~ ~ ~ ~ ~ ~ ~ ~ ~
8 ~ ~ ~ ~ ~ ~ ~ ~ ~
9 ~ ~ ~ ~ ~ ~ ~ ~ ~这种模式工作得很完美,但是新的人工智能现在已经猜到了它已经猜到的地方,这使得它效率很低,不那么聪明。我也尝试过使用if board[guess_row][guess_col] == "~":,但这也会导致模式失效。我怎么能让AI猜测只在它还没有猜到的地方?
发布于 2014-07-03 18:22:31
这句话:
while X == 0 | Y == 0:不会像你想的那样做。|是按位或的,在Python中(与C族不同)它比==具有更高的优先级。因此,Python将该行解析为:
while X == (0 | Y) == 0:相当于:
while X == Y == 0:由于比较运算符的链接,它相当于:
while (X == Y) and (Y == 0):相当于:
while (X == 0) and (Y == 0):这肯定不是您想要通过编写X == 0 | Y == 0来完成的!
不要使用按位OR,而是使用逻辑OR,它在Python中拼写为or
while X == 0 or Y == 0:https://stackoverflow.com/questions/24560565
复制相似问题