123得票26回答
用于确定井字棋游戏结束的算法

我用Java写了一个井字棋游戏,并且我目前用以下可能的情况来确定游戏是否结束: 棋盘已满,尚未宣布赢家:平局。 叉赢了。 圆赢了。 不幸的是,为了做到这一点,它需要从表格中读取预定义的这些情况。考虑到棋盘上只有9个空间,因此表格相对较小,这并不一定是坏事,但是否有更好的算法来确定游戏是...

64得票10回答
我该使用哪个算法来为AI决定井字棋游戏中的“最佳移动”?

在井字棋的实现中,我认为最具挑战性的部分是确定机器要播放的最佳移动。 有哪些算法可以追求?我正在研究从简单到复杂的实现。我该如何解决问题的这个部分?

42得票35回答
代码高尔夫:井字棋

以字符数为计量单位,发布您的最短代码,检查玩家是否获胜,如果是,确定哪个玩家获胜。 假设您有一个整数数组存储在变量b中(即棋盘),其中包含玩家的行动信息: 0 = 未设置 1 = 玩家1(X) 2 = 玩家2(O) 因此,给定数组b = [ 1, 2, 1, 0, 1, 2, 1, ...

18得票4回答
蒙特卡罗树搜索:用于井字棋的实现

编辑:上传了完整的源代码,如果您想查看是否能让AI表现更好:https://www.dropbox.com/s/ous72hidygbnqv6/MCTS_TTT.rar 编辑:搜索空间被搜索,导致失败的移动被发现。但是由于UCT算法,会很少访问导致失败的移动。 为了学习MCTS(蒙特卡洛树...

17得票1回答
使用jGraphT可以检查井字游戏的胜利条件吗?

我找到了这个可行的解决方案:private int[] winningPatterns = { 0b111000000, 0b000111000, 0b000000111, // rows 0b100100100, 0b010010010, 0b001001001, // co...

17得票1回答
井字棋完美AI算法: 更深入的"制造分支"步骤

我已经在StackOverflow上阅读了许多关于Tic Tac Toe的主题。我发现维基百科上的策略适合我的演示项目: 如果玩家选择以下表格中优先级最高的移动,则可以玩完美的井字游戏[3]。 1) 获胜: 如果您有两个相邻的棋子,下一步请下第三个以获得连成三个棋子。 2) 阻止对手获胜:...

16得票3回答
为白痴解释极小化算法

我浪费了一整天的时间尝试使用极小化极大算法来制作一个无敌的井字游戏人工智能。在过程中我错过了什么(脑子已经炸了)。 我不是在这里寻找代码,只是想更好地解释我在哪里出错了。 这是我的当前代码(极小化极大方法总是返回0,原因不明):from copy import deepcopy class...

15得票8回答
过多使用“if”语句是不好的编程习惯吗?

我想知道我是否使用过多的if/else if语句。我正在使用JavaScript编写井字棋程序,并使用大约9个if语句来确定计算机是否应该阻止玩家,以及在确定是否有三行时使用大约9个if语句。 例如:if(r1c1V === xOrO && r1c2V === xOrO &am...

14得票5回答
井字游戏人工智能:如何构建决策树?

我在制作井字棋机器人时,在理解“树”这个概念上遇到了巨大的障碍。我理解这个概念,但我无法弄清楚如何实现它。 有人能展示一下如何为这种情况生成一棵树的例子吗?或者有一个关于生成树的好教程吗?我猜难点在于生成部分树。我知道如何实现生成整个树,但不知道如何生成其部分。

13得票8回答
Flutter W/zipro (2568): 打开档案 build\app\outputs\apk\app.apk 出错:ERROR: dump failed because no AndroidManifest.xml found。

我制作了一个简单的井字游戏。起初,当我在实体安卓设备上运行程序时,它可以工作,但第二天就不行了。它显示了以下错误: W/zipro ( 2568): 打开档案错误 build\app\outputs\apk\app.apk: 无效的文件 ERROR: dump failed becau...