问题标签 [reversi]

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 投票
6 回答
3683 浏览

python - 需要黑白棋游戏的说明

我正在尝试用 Python 编写黑白棋游戏。谁能给我一些简单,好且易于使用的基本想法和策略?

我会很感激任何帮助,因为我已经走了一点路,但被困在代码之间,而且它也变得更加复杂。我认为我在某些应该相当简单的部分做得过火了。所以....

0 投票
9 回答
2735 浏览

code-golf - 代码高尔夫:黑白棋

好的,这是一个相当复杂的代码高尔夫挑战:实现黑白棋游戏(奥赛罗)。

  • 游戏应该显示游戏板的当前状态,并允许玩家在一台计算机上交替输入动作。
  • 错误的输入和不允许的动作必须被捕获,但可以默默地忽略。
  • 游戏必须在无法进行更多移动时结束(因为棋盘已满或因为没有移动会翻转任何棋子)。
  • 然后比赛必须宣布谁赢了,或者是否是平局。

用尽可能少的字符执行此操作。

会话应如下所示:

0 投票
3 回答
3739 浏览

python - 在黑白棋(python)中为计算机创建有效移动列表

我对编程比较陌生,所以请原谅这里缺少优雅的代码。该程序有点复杂,但我正处于想要完成它并查看结果的地步。无论如何,在这个函数中,我试图为计算机创建一个有效动作列表。

  • board 是 64 个两个项目列表的列表,每个列表都代表黑白棋板上的一个点
  • player 是玩家的棋子,可以是“X”或“O”(在程序前面确定)
  • 计算机是计算机的一部分,相反

第一步是收集板上当前空白的所有点(valid_list)。接下来,我尝试遍历这些点中的每一个,以查看是否有任何相邻点是玩家的棋子。如果是,我想收集所有点,以便在同一行(或列)中有另一台计算机。该代码对我来说似乎很有意义,但它给了我意想不到的结果。我只是想知道是否有人能猜出导致奇怪结果的原因(valid_list1 列表)。

0 投票
1 回答
14840 浏览

c++ - 如何在 C++ 中制作树形数据结构?

我正在和我的一个朋友一起学习人工智能方法的课程,我们已经合作完成了最终项目,该项目正在使用 C++ 和 OpenGL 编写奥赛罗和人工智能。

到目前为止,我们已经有了开发板和 Othello 引擎(我使用的是 MVC 类型的方法)。但事实证明难以掌握的一件事是人工智能。

我们应该编写一个 AI,它在树上使用 Alpha-Beta 修剪来快速计算它应该采取的下一步行动。

就游戏而言,Alpha-Beta 修剪的概念,以及用于检测哪些方格比其他方格更有价值的算法。

但是,我和我的伙伴还没有学习数据结构课程,因此我们不知道如何在 C++ 中正确创建树,甚至不知道从哪里开始。

所以我的问题是,Stack Overflow 是:我从哪里开始在不使用 STL的情况下快速(有效地)编写和遍历 C++ 中的 Alpha-Beta 修剪树。(我们的作业表明我们不允许使用 STL)。

感谢您提供任何和所有帮助,谢谢!

0 投票
2 回答
2747 浏览

java - 使用 Java Swing 为 Reversi GUI 创建一个游戏片段

我使用 JPanel 为黑白棋创建了一个基本的 GUI,以在 GridLayout 中表示棋盘。在播放乐曲的那一刻,点击的方块会改变颜色。我一直试图让一个圆形的部分来改变和背景保持不变。

我已经搜索了很多,我似乎无法找到一种方法来做到这一点?

- 编辑 -

构造函数的代码。播放乐曲时,鼠标侦听器只会更新棋盘

updateBaord 函数

0 投票
1 回答
71 浏览

java - 如果距离大于 2,寻路搜索崩溃

任务是创建一个黑白棋游戏。除了涉及更改多个芯片的动作外,我可以正常工作

,在这种情况下程序崩溃。坠机发生在某处isPlayable()

我哪里错了?

0 投票
2 回答
3523 浏览

python - 奥赛罗 Alpha-Beta 修剪玩坏蟒蛇

我目前正在尝试为奥赛罗制作一个好的 AI,并使用 Minimax 算法做到了这一点。然而,当我尝试使用 alpha-beta 剪枝进行更深入的搜索时,该算法似乎运行得很糟糕。我用 Wiki 和 Berkely.edu 等其他来源检查了它,我认为我已经正确实现了它,但我仍然找不到问题。

0 投票
2 回答
3776 浏览

java - 在奥赛罗中计算稳定的圆盘

我正在编写一个黑白棋(黑白棋)引擎,作为稍后实现国际象棋引擎的培训。我想计算稳定件的数量,但不知道最好的方法是什么。

我可以轻松计算“边缘稳定”部分,但我不确定如何计算其他部分。我使用一维数组来表示板。

感谢任何提示!

0 投票
4 回答
830 浏览

java - 有没有办法快速查找数组中的所有位置是否“满”?

如果我有一个 64 长度的 java 数组 i[],除了循环遍历整个数组之外,是否有一种快速的方法来确定该数组中的每个位置是否都是“满的”?我正在写一个黑白棋 AI,我需要知道整个数组是否已满。

0 投票
1 回答
2023 浏览

java - 为什么我的 alpha-beta 修剪实现不起作用?

我正在使用维基百科伪代码来针对 -

这是我的java实现 -

在对我的代码进行了一些修改之后,它不再存在提前返回的问题,但是我确实遇到了 alpha 和 beta 永远不会改变的问题

我会解释发生了什么,假设他们工作

findMovesBlack() 和 findMovesWhite() 都返回 Integer[] 数组,其中包含任一玩家可以移动的可能位置,无论轮到谁。对于黑白棋的初始位置,findMovesBlack() 将返回 [19, 26, 37, 44]

如果 findMovesBlack() 和 findMovesWhite() 的长度都为 0,则 allNodesFull() 返回一个布尔值。

blacknodes() 和 whitenodes() 分别返回黑色或白色节点的数量。

Node.move(int coordinate) 返回一个 String[] 数组,其中包含已翻转和放置的新位置。相信我,它工作正常。

a Node(String[] gameboard, boolean player-to-move) 只是使用我们找到的参数设置了一个新位置。

我相信这就是你需要看到的。我已经解决了后端的所有问题。