Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java tic-tac-toe游戏树_Java_Tree_Tic Tac Toe - Fatal编程技术网

Java tic-tac-toe游戏树

Java tic-tac-toe游戏树,java,tree,tic-tac-toe,Java,Tree,Tic Tac Toe,首先,我是java的初学者,我正在尝试模拟Tictatcoe游戏。我想使用游戏树为所有州创建一个可能的树。树中的每个节点将表示状态,并使用此树来决定下一步要执行的操作。我计划采取以下方法: 接口类包括表示单个移动所需的信息 抽象/接口类包括以下方法: a。返回一个新的状态对象,该对象表示游戏的状态 实施这一举措 b。如果当前状态代表其中一方的胜利,则此游戏的赢家id 球员们 c。返回当前玩家和下一个玩家ID 在类中,包含用于 a。在游戏树中此节点上表示的游戏状态 b。给定移动,将子节点添加到此节

首先,我是java的初学者,我正在尝试模拟Tictatcoe游戏。我想使用游戏树为所有州创建一个可能的树。树中的每个节点将表示状态,并使用此树来决定下一步要执行的操作。我计划采取以下方法:

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

    a。返回一个新的状态对象,该对象表示游戏的状态 实施这一举措

    b。如果当前状态代表其中一方的胜利,则此游戏的赢家id 球员们

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

  • 在类中,包含用于

    a。在游戏树中此节点上表示的游戏状态

    b。给定移动,将子节点添加到此节点

    c。给定移动,返回相应的子节点

  • 在另一个类中,包含

    a。构造具有初始状态的树

    b。返回游戏的当前状态

    c。给定移动,更新树,使树的根保持新的状态 比赛

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

  • 我知道树的概念(二进制或avl或红黑),但我有点困惑从哪里开始以及如何继续。关于这方面的任何建议都将非常有用

    谢谢


    Sinx

    对于3x3网格来说,树是多余的,只需使用玩家ID的2D数组来模拟场景即可。要检查wins,请在每行(三行、三列和两条对角线)的每个单元格上循环。如果这些行中的所有单元格都属于同一玩家,则该玩家获胜

    为简单起见,这些线可以是坐标列表,即

    [[[0, 0], [0, 1], [0, 2]],
    ...
    [[0, 0], [1, 1], [2, 2]],
    ...
    
    FWTW,我正在用Javascript/ThreeJS为一个学校项目制作一个3D Tictaoe游戏,这个方法在4x4网格上运行良好