Tic Tac脚趾的比赛树

时间:2012-11-09 01:41:25

标签: java tree tic-tac-toe

首先,我是java的初学者,我正在尝试模拟TicTacToe游戏。我想使用游戏树为所有州创建一个可能的树。树中的每个节点都将表示状态,并使用此树来决定下一步要进行的操作。我计划如下处理,

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

    一个。返回一个新的状态对象,表示在游戏后的状态     应用这一举动。

    湾如果当前状态代表其中一个胜利,则此游戏的获胜者的ID     球员。

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

  3. 在类中包含方法,

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

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

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

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

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

    湾返回游戏的当前状态

    ℃。给定一个Move,更新树,以便树的根保持新的状态     游戏。

    d。生成此树的子节点到给定深度。

  5. 我知道树的概念(二进制或avl或红黑)但我有点困惑从哪里开始以及如何继续。对此背景的任何建议都非常有用。

    由于

    选择Sinx

1 个答案:

答案 0 :(得分:1)

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

为简单起见,这些行可能只是一个坐标列表列表,即

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

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