12得票7回答
生成所有唯一的井字棋盘列表

我想生成一个文本文件,其中包含所有19,683个井字棋棋盘布局,结构为0=空白,1=X和2=O。不幸的是,数学不是我的强项,我似乎找不到任何关于这方面的例子。 我保证这不是作业。我打算通过Minimax计算器运行这些数据,以生成一个包含RGB值的图像,表示基于棋盘设置的最佳移动。我正在开发一...

11得票2回答
游戏编程中,我该如何测试所使用的启发式算法是否一致?

我已经想出了一些适用于大型(高维度)井字棋游戏的启发式策略。如何检查它们中哪些实际上是一致的? “一致性”究竟是什么意思呢?

11得票1回答
如何修复“void value expression”错误?

我写了一个井字棋程序。目前遇到问题的部分是,我一直在收到错误:tac.rb:63: void value expression tac.rb:65: void value expression 这个错误来自于我的check_win方法。if str == "xxx" ...

10得票1回答
井字棋和极小化极大算法——在微控制器上创建不完美的人工智能

我在微控制器上创建了一个井字游戏,包括完美的人工智能(完美的意思是它不会输)。我没有使用极小化算法,只是用一个状态机和所有可能的最佳移动。我现在的问题是,我想要实现不同的难度(简单、中等和困难)。到目前为止,AI将是困难的。 所以我考虑了最好的方法,最终想要使用minimax算法,但是以一种计...

10得票4回答
井字游戏AI做出了错误的决策

背景:为了学习C++中的多节点树,我决定生成所有可能的井字棋盘,并将它们存储在一棵树中,使得从一个节点开始的分支都是可以从该节点继续的棋盘,而一个节点的子节点则是通过一步操作后得到的棋盘。然后,我想写一个人工智能程序来使用这棵树作为决策树来玩井字棋。 井字棋是一个可解决的问题,完美的玩家永远...

10得票7回答
井字棋战略简化

我决定写一个小程序来解决井字棋问题,以尝试一些对于这个简单游戏的剪枝技巧的效果。使用minimax解决所有可能的游戏,完整的游戏树仅有 549,946 种可能。利用alpha-beta剪枝技术,评估所需的状态数量减少到 18,297。然后我应用置换表将数量降至 2,592。现在我想看看这个数字...

9得票2回答
井字游戏的Q学习算法

我不知道如何更新井字游戏(tic tac toe)的Q值。我已经阅读了所有相关内容,但我无法想象如何做到这一点。我了解到Q值在游戏结束时被更新,但我不明白是否每个动作都有一个Q值?

9得票3回答
编译问题?

我目前正在完成一个井字棋程序的作业。我的问题是,在计算我的玩家(无论是“X”玩家还是“Y”玩家)时,它似乎将两个玩家都计算为同一个。例如,在第三次下棋后,它会看做已经下了三个棋子,并将其计为胜利者,即使只有其中一位玩家下了两个棋子,而另一个玩家只下了一个棋子。 public class Ti...

8得票8回答
在React Js中实现两个for循环以创建一个3X3的九宫格方框,用于井字棋游戏。

我正在按照React Js官网上的教程进行学习,帮助我们构建一个井字棋游戏。方框是通过硬编码实现的,代码如下: render(){ return ( <div> <div className = "board-row"> {th...

8得票2回答
Q学习应用于双人游戏

我正在尝试实现一个Q学习智能体,以学习在与随机智能体玩井字棋游戏时的最优策略。 我已经创建了一个计划,我相信这个计划会奏效。只有一个部分让我无法理解。这是因为环境中有两个玩家。 现在,一个Q学习智能体应该根据当前状态,采取某些策略的行动a,给定行动的连续状态s'和从该连续状态接收到的任何奖...