Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 战舰游戏AI猜同样的事情_Python - Fatal编程技术网

Python 战舰游戏AI猜同样的事情

Python 战舰游戏AI猜同样的事情,python,Python,我已经用Python创建了一个战舰游戏。目前,该游戏有一个简单的人工智能,可以随机猜出一个在棋盘上还没有猜到的位置,以尝试找到两块的大型战舰。我通过给人工智能一个可遵循的模式,使其更加智能化。为了生成AI的猜测,我使用以下代码 while X == 0 | Y == 0: X = 0 Y = 0 guess_col = guessCol(0, size - 1) guess_row = guessRow(0, size - 1) # Make s

我已经用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\u row][guess\u col]==“~”:
,但这也会导致模式不起作用。我怎样才能让人工智能只在它尚未猜到的点上进行猜测?

行:

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):
由于比较运算符的链接,这相当于:

while X == Y == 0:
while (X == Y) and (Y == 0):
while (X == 0) and (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中拼写为

while X == 0 or Y == 0:
该行:

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):
由于比较运算符的链接,这相当于:

while X == Y == 0:
while (X == Y) and (Y == 0):
while (X == 0) and (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中拼写为

while X == 0 or Y == 0:

您是否曾将
线路板[guess\u row][guess\u col]
的值更改为
~
以外的值?给我们看一下代码。@jwodder当猜到块时,它会变为X,当船被击中时,它会变为H。我这里有完整的源代码:你有没有把
板[guess\u row][guess\u col]
的值改成
~
以外的值?给我们看一下代码。@jwodder当猜到块时,它会被更改为X,当飞船被击中时,它会被更改为H。我这里有完整的源代码:谢谢!我从来没有想到我必须拼出
!谢谢我从来没有想到我必须拼出