有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何用三项描述一个状态

我正在用Java创建棋盘游戏Tic Tac Toe

一个单元格将有三种状态:空、X或O

用Java表示这一点的最佳实践是什么?我应该创建自己的Cell类,还是只使用整数(0/1/2)来表示这三种状态?如果它有两个状态,那么我可以用布尔值来表示这两个状态,是否有一个类似的已经定义了三个状态的类


共 (5) 个答案

  1. # 1 楼答案

    可以使用包含三个值的枚举,如:

    public enum CellState {
        EMPTY,
        X,
        O
    }
    

    然后像这样使用它:

    board.setCell(cellposition, CellState.X);
    
  2. # 2 楼答案

    有多种方法,但在这种情况下,我更喜欢使用枚举来表示您的状态

    public enum State {
        EMPTY,
        X,
        O
    }
    

    然后你的细胞类看起来像这样

    public class Cell {
        private State state;
    
        public Cell(State state) {
            this.state = state;
        }
    
        public State getState {
            return state;
        }
    
        public void setState(State state) {
            this.state = state;
        }
    
    }
    
  3. # 3 楼答案

    我会为此使用枚举:

    enum CellState {
        EMPTY,
        X,
        O
    }
    

    然后在代码中:

    public static void main(String[] args) {
        CellState[][] cellStates = new CellState[3][3];
        cellStates[0][0] = CellState.X;
    
        // Do other stuff
    
    }
    

    我刚刚将董事会结构定义为CellState[][]作为示例,但这可以是任何形式

  4. # 4 楼答案

    在使用OO语言时,最重要的一点是对象对行为进行建模,并在可能的情况下包含实现行为所需的数据。行为是物体所做的,而不是对它们所做的

    因此,除非有理由在你没有说明的要求中加入,否则细胞本身没有任何行为,它只是一个玩家标记的地方

    所以你可以有一个简单的标记数组,两个玩家都会更新,使用一个带有三个值的枚举,或者你可以让每个玩家更新他们自己的标记数据,在这种情况下,每个玩家都会有一个布尔数组或一个短位掩码来指示他们的行动。在后一种情况下,每个玩家只需更改自己的“goes”状态,就可以对自己的获胜条件进行测试,而不是共享状态——唯一的共享是他们必须询问另一个玩家所选的单元格是否有效。这取决于你希望你的设计有多严格,这是否是“最佳实践”——对于这样一个简单的问题,你可以用COBOL编写,用户也会很高兴

  5. # 5 楼答案

    我会使用枚举:

    public enum CellState {
        EMPTY,
        X,
        O;
    }
    

    以及一个单元格类,其字段类型为CellState