问题标签 [gomoku]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
554 浏览

java - 使用 Java Swing 实现 5x5 到 50x50 棋盘游戏

使用 Java 和 Swing 实现可配置维度矩阵以表示带有单元格的 2d 棋盘游戏的最佳方法是什么?

网格布局?桌子?

0 投票
1 回答
1472 浏览

c++ - C语言中的五子棋数据表示

我正在开发一个我目前使用 GUI 等完成的五子棋游戏,我需要编写 IA 和规则检查器(用于可选规则,如捕获、禁止模式等)。我打算用一个 int 数组来代表董事会,比如:

这将代表 19 * 19 戈班(板)。假设我们可以将一个 32 位整数拆分为 4 个字节,并且在每个字节内我们可以像这样存储元数据,例如:

  • 第一个字节:这种情况是空/黑/白吗?
  • 第二个字节:这种情况是特殊模式的一部分吗?
  • 第三个字节:我在图案的哪个位置?
  • 第 4 个字节:我可以被捕获吗?

我不知道这种解决方案是否适用于 Gomoku AI,但我遇到的主要问题是如何正确编写它。让我们采取模式:

这是一个开放和自由的三个,它在内部和末端都有空间。我应该如何将此模式与没有坐标的静态表示联系起来?

另一个问题是我应该什么时候更新模式以及如何因为在 361 案例中如果我将之前的数字更新为这个可能会很长:

我必须更新所有四个案例,所以我认为它不合适,而且它会影响许多其他垂直/对角线图案。

我是否应该像这样列出当前在地图上的模式:

并使地图成为一个简单的 tribool 或 char 数组?

我希望我的数据表示能够为我提供最大的信息,以便快速更新我的评估函数将填充的影响图。我已经阅读了有关威胁空间搜索和其他 Gomoku 算法的几篇文章,但他们没有谈论数据表示,我不知道如何正确地做到这一点,请你帮我找到一种干净的方法来表示模式以及如何更新它们。

谢谢。

0 投票
2 回答
137 浏览

java - 为什么 checkforWin(File f) 为真时不返回真?

这导致在这个五子棋游戏中除了获胜移动之外还有一个额外的移动,额外移动之后的 checkForWin 方法是检测胜利的方法,但它应该是相应的 makeMove 方法之后的 checkForWin 方法。

**

// 为简洁起见省略了 try/catch 块

0 投票
1 回答
1456 浏览

java - 五子启发式

我正在做一个五子棋任务,它可以与自己(计算机)和人类一起玩。要求是有时间限制。这意味着如果您将总游戏时间设置为 2 分钟,那么在 2 分钟结束时,游戏应该结束。

教授建议可以将时间平均分配给游戏的每个节点。游戏应该使用修剪策略。所以假设有 20 个节点状态要访问,那么 2 分钟在这 20 个节点之间分配。

我很困惑,因为应该访问多少个状态取决于人/计算机采取的行动。那么我如何知道要访问多少个节点并为每个节点分配适当的时间?

此外,我决定在修剪搜索中应用研究论文建议的“四结束”或“中断三”启发式策略。但是到了这个时间限制要求,我应该在什么时候应用这个策略,在什么时候我应该只应用正常的修剪?

谢谢你的建议。

0 投票
1 回答
1632 浏览

c++ - 五子棋最先进的技术

通常人们使用 pn-search 或 pn^2 或 df-pn 来回答是否有获胜的解决方案。

然后他们在具有良好评估功能的 min-max 博弈树上使用 alpha-beta 剪枝

它们可以达到 15 层甚至更多的深度

现在有一种蒙特卡洛方法可以成功地处理围棋。

五子棋可以使用相同的技术吗?任何示例(源代码或论文)

是否有任何论文描述了构建良好调整的评估函数的好方法。

或者是否有任何其他最先进或有用的技术来处理五子棋?

处理五子棋时是否需要 pn 搜索?

有没有不同的 VCT 引擎(src 更好)?

0 投票
2 回答
506 浏览

java - 如何让我的 Go-Moku 游戏继续循环播放?

我正在尝试制作游戏 Go-Moku。游戏可以编译,但无法正常运行。当我运行游戏时,我可以打印空板,然后提示我输入行和列整数,但是一旦我按 Enter 提交列 int,则没有其他任何反应。

这是我的代码:

谢谢

0 投票
1 回答
617 浏览

data-structures - 五子棋局代表

我正在开发五子棋游戏,我需要一个有效的数据结构来存储棋盘状态,我曾考虑将其存储在二维数组中,但我确信有一种更有效的方法。谢谢

0 投票
1 回答
460 浏览

ruby - Ruby 计算矩阵对角行中的重复项

我正在用 Ruby 实现五子棋游戏,这是在 15x15 棋盘上玩的井字游戏的一种变体,第一个在水平、垂直或对角线上放置 5 个 O 或 X 的玩家获胜。

首先,我将 Matrix 分配给一个变量并用 0 到 224 的数字填充它,所以没有重复,我可以稍后计算它们

然后玩家轮流,每回合后我用方法检查胜利win?

我知道,我可能做错了,但我的问题不在于,尽管欢迎提出建议。问题在于对角线行。我不知道如何计算对角行中的重复项

0 投票
0 回答
1689 浏览

java - Java中的五子棋评估函数

我已经实现了一个 Gomoku Player 类,它使用 alpha beta 修剪来为计算机选择可能的最佳移动,但是我无法弄清楚如何编写评估函数来正确地对棋盘上的每个位置进行评分。

我有一个 'evaluateBoard' 方法,可以评估棋盘位置并更新每行、每列和对角线中的黑色、白色或空白位置的数量。我的 'scoreChange' 方法对每个位置进行评分,这就是我觉得我的程序出错的地方,因为当我连续获得 3 或 4 时它不会阻止我。

如何正确评估和评分每个职位?

0 投票
1 回答
1329 浏览

java - Java 五子棋极小极大

我正在尝试为五子棋游戏创建一种与人类或其他策略对抗的策略。我已经有了某种 minimax 函数,虽然我不太明白它是如何工作的,而且我还有一个 getscore 函数,它应该将最好的分数发回给 minimax ?但问题是我的 getScore 函数无法识别一行/列/对角线是否有 4 个或 5 个圆圈。

这是我的代码:

getScore 似乎存在某种问题,当我运行此代码时,我只能玩一会儿,直到我的 Gomoku 应用程序崩溃。

如果您想自己尝试一下,那么您可以通过 Eclipse 打开它。下载项目文件:http ://www68.zippyshare.com/v/feWl2QwC/file.html 导入到eclipse项目/工作区。而且您还必须在 lib 文件夹中构建这 2 个 jar 文件的路径。注意:我只能编辑 gomoku.strategies 包中的文件。