问题标签 [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.
python - 需要黑白棋游戏的说明
我正在尝试用 Python 编写黑白棋游戏。谁能给我一些简单,好且易于使用的基本想法和策略?
我会很感激任何帮助,因为我已经走了一点路,但被困在代码之间,而且它也变得更加复杂。我认为我在某些应该相当简单的部分做得过火了。所以....
code-golf - 代码高尔夫:黑白棋
好的,这是一个相当复杂的代码高尔夫挑战:实现黑白棋游戏(奥赛罗)。
- 游戏应该显示游戏板的当前状态,并允许玩家在一台计算机上交替输入动作。
- 错误的输入和不允许的动作必须被捕获,但可以默默地忽略。
- 游戏必须在无法进行更多移动时结束(因为棋盘已满或因为没有移动会翻转任何棋子)。
- 然后比赛必须宣布谁赢了,或者是否是平局。
用尽可能少的字符执行此操作。
会话应如下所示:
python - 在黑白棋(python)中为计算机创建有效移动列表
我对编程比较陌生,所以请原谅这里缺少优雅的代码。该程序有点复杂,但我正处于想要完成它并查看结果的地步。无论如何,在这个函数中,我试图为计算机创建一个有效动作列表。
- board 是 64 个两个项目列表的列表,每个列表都代表黑白棋板上的一个点
- player 是玩家的棋子,可以是“X”或“O”(在程序前面确定)
- 计算机是计算机的一部分,相反
第一步是收集板上当前空白的所有点(valid_list)。接下来,我尝试遍历这些点中的每一个,以查看是否有任何相邻点是玩家的棋子。如果是,我想收集所有点,以便在同一行(或列)中有另一台计算机。该代码对我来说似乎很有意义,但它给了我意想不到的结果。我只是想知道是否有人能猜出导致奇怪结果的原因(valid_list1 列表)。
c++ - 如何在 C++ 中制作树形数据结构?
我正在和我的一个朋友一起学习人工智能方法的课程,我们已经合作完成了最终项目,该项目正在使用 C++ 和 OpenGL 编写奥赛罗和人工智能。
到目前为止,我们已经有了开发板和 Othello 引擎(我使用的是 MVC 类型的方法)。但事实证明难以掌握的一件事是人工智能。
我们应该编写一个 AI,它在树上使用 Alpha-Beta 修剪来快速计算它应该采取的下一步行动。
就游戏而言,Alpha-Beta 修剪的概念,以及用于检测哪些方格比其他方格更有价值的算法。
但是,我和我的伙伴还没有学习数据结构课程,因此我们不知道如何在 C++ 中正确创建树,甚至不知道从哪里开始。
所以我的问题是,Stack Overflow 是:我从哪里开始在不使用 STL的情况下快速(有效地)编写和遍历 C++ 中的 Alpha-Beta 修剪树。(我们的作业表明我们不允许使用 STL)。
感谢您提供任何和所有帮助,谢谢!
java - 使用 Java Swing 为 Reversi GUI 创建一个游戏片段
我使用 JPanel 为黑白棋创建了一个基本的 GUI,以在 GridLayout 中表示棋盘。在播放乐曲的那一刻,点击的方块会改变颜色。我一直试图让一个圆形的部分来改变和背景保持不变。
我已经搜索了很多,我似乎无法找到一种方法来做到这一点?
- 编辑 -
构造函数的代码。播放乐曲时,鼠标侦听器只会更新棋盘
updateBaord 函数
java - 如果距离大于 2,寻路搜索崩溃
任务是创建一个黑白棋游戏。除了涉及更改多个芯片的动作外,我可以正常工作
,在这种情况下程序崩溃。坠机发生在某处isPlayable()
。
我哪里错了?
python - 奥赛罗 Alpha-Beta 修剪玩坏蟒蛇
我目前正在尝试为奥赛罗制作一个好的 AI,并使用 Minimax 算法做到了这一点。然而,当我尝试使用 alpha-beta 剪枝进行更深入的搜索时,该算法似乎运行得很糟糕。我用 Wiki 和 Berkely.edu 等其他来源检查了它,我认为我已经正确实现了它,但我仍然找不到问题。
java - 在奥赛罗中计算稳定的圆盘
我正在编写一个黑白棋(黑白棋)引擎,作为稍后实现国际象棋引擎的培训。我想计算稳定件的数量,但不知道最好的方法是什么。
我可以轻松计算“边缘稳定”部分,但我不确定如何计算其他部分。我使用一维数组来表示板。
感谢任何提示!
java - 有没有办法快速查找数组中的所有位置是否“满”?
如果我有一个 64 长度的 java 数组 i[],除了循环遍历整个数组之外,是否有一种快速的方法来确定该数组中的每个位置是否都是“满的”?我正在写一个黑白棋 AI,我需要知道整个数组是否已满。
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) 只是使用我们找到的参数设置了一个新位置。
我相信这就是你需要看到的。我已经解决了后端的所有问题。