首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >战舰游戏AI猜同样的东西

战舰游戏AI猜同样的东西
EN

Stack Overflow用户
提问于 2014-07-03 18:06:42
回答 1查看 899关注 0票数 1

我用Python制作了一款战舰游戏。目前,游戏有一个简单的人工智能,随机猜测一个点,它还没有在董事会上猜测,试图找到两块大型战舰。我是让人工智能更聪明,给它一个模式,以遵循。要生成AI的猜测,我使用以下代码。

代码语言:javascript
运行
复制
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

董事会看起来如下所示。

代码语言:javascript
运行
复制
  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猜测只在它还没有猜到的地方?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-03 18:22:31

这句话:

代码语言:javascript
运行
复制
while X == 0 | Y == 0:

不会像你想的那样做。|是按位或的,在Python中(与C族不同)它比==具有更高的优先级。因此,Python将该行解析为:

代码语言:javascript
运行
复制
while X == (0 | Y) == 0:

相当于:

代码语言:javascript
运行
复制
while X == Y == 0:

由于比较运算符的链接,它相当于:

代码语言:javascript
运行
复制
while (X == Y) and (Y == 0):

相当于:

代码语言:javascript
运行
复制
while (X == 0) and (Y == 0):

这肯定不是您想要通过编写X == 0 | Y == 0来完成的!

不要使用按位OR,而是使用逻辑OR,它在Python中拼写为or

代码语言:javascript
运行
复制
while X == 0 or Y == 0:
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24560565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档