3

首先,我是java初学者,我正在尝试模拟井字游戏。我想使用游戏树为所有状态创建一个可能的树。树中的每个节点都将代表状态并使用这棵树来决定下一步要采取的行动。我计划如下接近,

  1. 接口类包括表示单个移动所需的信息。
  2. 抽象/接口类包括以下方法:

    一个。返回一个新的状态对象,它表示
    应用该移动后游戏的状态。

    湾。如果当前状态代表其中一名玩家获胜,则该游戏获胜者的 id。

    C。返回当前玩家和下一个玩家ID。

  3. 在一个类中包括方法,

    一个。游戏树中此节点处表示的游戏状态

    湾。给定一个 Move,向该节点添加一个子节点。

    C。给定一个 Move,返回相应的子节点。

  4. 在另一个类中包含方法,

    一个。构造一棵具有初始状态的树。

    湾。返回游戏的当前状态

    C。给定一个移动,更新树,使树的根保持游戏的新状态。

    d。为这棵树生成给定深度的子节点。

我知道树的概念(二进制或 avl 或红黑),但我有点困惑从哪里开始以及如何继续。在这种情况下的任何建议都会非常有帮助。

谢谢

辛克斯

4

1 回答 1

1

树木对于 3x3 网格来说太过分了,只需使用 2D 玩家 ID 数组来模拟场景。要检查是否获胜,请遍历每行中的每个单元格(三行、三列和两条对角线)。如果任何这些行中的所有单元格都属于同一玩家,则该玩家获胜。

为简单起见,线条可能只是坐标列表的列表,即

[[[0, 0], [0, 1], [0, 2]],
...
[[0, 0], [1, 1], [2, 2]],
...

FWTW,我正在为一个学校项目用 Javascript/ThreeJS 制作一个 3D tictactoe 游戏,这种方法在 4x4x4 网格上运行良好。

于 2012-12-14T04:57:44.513 回答