首页 文章

Tic Tac脚趾的比赛树

提问于
浏览
3

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

  • 接口类包括表示单个移动所需的信息 .

  • abstract / interface类包含以下方法:

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

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

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

  • 在类中包含方法,

一个 . 在游戏树中的该节点处表示的游戏状态

湾给定Move,将子节点添加到此节点 .

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

  • 在另一个类中包含方法,

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

湾返回游戏的当前状态

C . 给定Move,更新树,以便树的根保持游戏的新状态 .

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

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

谢谢

氮化硅

1 回答

  • 1

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

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

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

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

相关问题