【问题标题】:Tic-Tac-Toe AI with multi dimensional arrays and turtles具有多维数组和海龟的井字游戏 AI
【发布时间】:2019-04-08 17:46:49
【问题描述】:

我正在尝试通过使用海龟在 Repl.it 上绘制棋盘来制作井字游戏。效率不是很高,但我正在尝试开发一种 AI,而不必对所有可能的板组合进行编程。

我对python还是很陌生;我正在学校上 AP ComSciPri 课程。我已经在函数和计算等方面学到了很多基础知识,但在宏伟的计划中我错过了很多。除了创建分支来绑定每个游戏之外,有没有办法创建一个程序来做到这一点?

不确定这是否有帮助,但是:

gameArray = [["-","-","-"],["-","-","-"],["-","-","-"]]

uArray = [["0","0","0"],["0","0","0"],["0","0","0"]]

cpuArray = [["0","0","0"],["0","0","0"],["0","0","0"]]

winningArrays = [
[["X","X","X"],["0","0","0"],["0","0","0"]],
[["0","0","0"],["X","X","X"],["0","0","0"]],
[["0","0","0"],["0","0","0"],["X","X","X"]],
[["X","0","0"],["X","0","0"],["X","0","0"]],
[["0","X","0"],["0","X","0"],["0","X","0"]],
[["0","0","X"],["0","0","X"],["0","0","X"]],
[["X","0","0"],["0","X","0"],["0","0","X"]],
[["0","0","X"],["0","X","0"],["X","0","0"]]]

我使用海龟来绘制棋盘并放置图章,以及操作调试板(gameArray、uArray、cpuArray)。


如果用户输入 == 1:

spaceList.remove(1)

turt1.shape("circle")

turt1.color("black")

turt1.penup()

turt1.goto(-75,-25)

turt1.stamp()

gameArray[2][0] = "U"

uArray[2][0] = "X"

我将链接我在hastebin 中的内容。大多数情况下,我想要一些关于我可以研究的东西的信息,或者是否有人可以给我任何建议。提前致谢!

【问题讨论】:

  • 看看MinMax方法,我用python做了一个tictactoe,AI使用了Min Max算法
  • 这与您的问题无关,而是您对winningArrays SCREAMS“我是编程新手”的定义。编写代码时要考虑的一件事是可伸缩性。如果我们需要将此井字游戏扩展到 7x7 网格,您将需要在 winningArrays 定义上做很多工作。如果可以的话,我建议找到一种不同的方法来确定某个棋盘是否是获胜棋盘。我相信你的老师会很感激的。

标签: python


【解决方案1】:

拥有 AI 最重要的是衡量董事会状态的好坏。作为一个非常简单的例子,假设指标将是棋盘是否处于获胜状态(连续三个 X)。然后让 AI 检查轮到它可以制作的所有不同的棋盘(最多 9 个),如果其中一个是赢家,我们就会选择那个!否则只是随机选择一些东西。这肯定比随机机会做得更好,并且可能是您程序的一个很好的“简单模式”计算机播放器。如果你可以创建一个更复杂的函数,哪个棋盘状态更好,你可以创建一个更复杂的计算机播放器。

【讨论】:

  • 嘿!感谢您的快速回复!我当前的程序已经使用随机选择功能来选择空格。但是,即使你犯了错误也很难输,所以我一定要尝试实施更具体的选择!你对如何解决这个问题有什么建议吗?关于您的其他评论:那是因为我对编程比较陌生。我编写程序并没有打算给它添加人工智能或困难,所以我选择尝试一种我不太熟悉的方法并尝试从中学习。无论如何,非常感谢您的建议!
  • 我建议先下来的“困难部分”是指标。简单地说,一个将棋盘状态作为输入的函数,并吐出一个数字,对于更接近获胜的棋盘来说,这个数字通常较高,对于不接近获胜的棋盘来说,这个数字通常较低。一旦你有了这个函数,让计算机根据这个函数的输出“选择”一个动作应该就像在最多 9 个列表中找到最大数一样容易。
  • 我肯定会对它进行一些研究。再次感谢您的建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
相关资源
最近更新 更多