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

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

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

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

8得票4回答
如何高效地在m,n,k游戏(广义井字棋)中早期检测到平局?

我正在实现一个m,n,k游戏,这是井字棋的一般化版本,其中m是行数,n是列数,k是玩家需要在一行中放置的棋子数以获胜。我已经实现了检查胜利的功能,但我还没有找到一种令人满意的方法,在棋盘被填满棋子之前检查是否存在无法获胜的情况。换句话说,棋盘上可能有空槽,但它们不能以一种使一名玩家获胜的方式填...

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

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

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

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

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

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

8得票2回答
简单的井字棋人工智能

我知道这个问题已经被问了很多次,我也查找了其他代码,但是大部分看起来都不完美(从不输)并且不够简洁、优雅和高效。我无法决定哪种解决方案适合这种描述。 我看到的解决方案有: (1) 使用带有alpha-beta剪枝的minimax算法。对于这样一个简单的游戏来说,这似乎过于复杂了吧?如果不是...

8得票1回答
Pygame井字棋逻辑?我要如何实现它

我正在尝试用Pygame制作井字棋游戏,并且想知道如何实现逻辑。这是我的代码,视频 < 我只能在点击中间按钮时,在屏幕上显示玩家2的 X ,然后悬停在我的鼠标上的图像会变成 O ,轮到玩家1进行操作。但我的问题是,如果玩家1连成3个一排,或者玩家2连成3个一排,我该如何处理逻辑。我真的很...

7得票8回答
所有可能的井字棋获胜组合

我曾经参加了一次面试,在面试中被问到了一个看起来很简单的算法问题:“编写一个算法,返回所有可能的井字棋胜利组合。” 我仍然无法找到一个有效的处理方法。是否有一个标准算法或常见算法可应用于类似的问题,而我不知道呢?

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

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