首先,我是java的初学者,我正在尝试模拟TicTacToe游戏 . 我想使用游戏树为所有州创建一个可能的树 . 树中的每个节点都将表示状态,并使用此树来决定下一步要进行的操作 . 我计划如下处理,
-
接口类包括表示单个移动所需的信息 .
-
abstract / interface类包含以下方法:
一个 . 返回一个新的状态对象,表示游戏的状态
应用这一举动 .
湾如果当前状态代表其中一个玩家的胜利,则该游戏的获胜者的id .
C . 返回当前玩家和下一个玩家ID .
- 在类中包含方法,
一个 . 在游戏树中的该节点处表示的游戏状态
湾给定Move,将子节点添加到此节点 .
C . 给定一个Move,返回相应的子节点 .
- 在另一个类中包含方法,
一个 . 构造具有初始状态的树 .
湾返回游戏的当前状态
C . 给定Move,更新树,以便树的根保持游戏的新状态 .
d . 生成此树的子节点到给定深度 .
我知道树的概念(二进制或avl或红黑)但我有点困惑从哪里开始以及如何继续 . 对此背景的任何建议都非常有用 .
谢谢
氮化硅
1 回答
树木对于3x3网格来说是过度的,只需使用2D数组的玩家ID来为场景建模 . 要检查获胜,请遍历每一行中的每个单元格(三行,三列和两个对角线) . 如果这些线中的任何一个中的所有单元都属于同一个玩家,那么该玩家就赢了 .
为简单起见,这些行可以只是一个坐标列表列表,即
FWTW,我正在Javascript / ThreeJS中为学校项目制作3D tictactoe游戏,这种方法在4x4x4网格上运行良好 .