can变量在java中有多个枚举常量?

时间:2016-11-08 05:18:29

标签: java enums

我正在构建简单的java游戏,用户必须找到黄金。像Orc,Goblin和Poop这样的障碍。

我要做的是创建Cell和Board类。

在我的Cell类中,

public Cell{
  public enum TheCell { Orc, Goblin, Poop, Gold, Empty};
    TheCell type;
  public Cell(TheCell type){
    this.type = type;
  }
}

我在Board类中做了两个维度,

public Board{
  Cell[][] grid = new Cell[7][7];
  Random r = new Random();

  for(int i = 0; i<3; i++){
    int randNum1 = r.nextInt(7);
    int randNum2 = r.nextInt(7);
    grid[randNum1][randNum2] = new Cell(Cell.TheCell.Orc);
  }
  for(int i = 0; i<3; i++){
    int randNum1 = r.nextInt(7);
    int randNum2 = r.nextInt(7);
    grid[randNum1][randNum2] = new Cell(Cell.TheCell.Goblin);
  }
}

我的问题是,如果Orc和Goblin是同一个细胞,我想把它们都放在同一个细胞中。是否有一些我可以在同一个细胞中保持两个或多个障碍?谢谢!

2 个答案:

答案 0 :(得分:2)

实现此目的的一种方法是让Cell类保存当前在单元格上的所有怪物/事物的列表(使用已经可用的枚举)

更“低级别”的方法是对单元格使用整数,然后使用位标志对同一单元格中的多个障碍进行建模。

更新: 我同意@ajb,在这种情况下应该使用Enum Set

正如@JimGarrison指出的那样,EnumSet方法只有在你需要为一个单元格拥有多个枚举值的实例时才会起作用。

答案 1 :(得分:-2)

public Cell{
  public enum TheCell { Orc, Goblin, Poop, Gold, Empty};

  List<TheCell> type = new ArrayList<TheCell>();

  public Cell(TheCell type){
    addType(type);
  }

  public addType(TheCell type) {
    this.type.add(type);
  }
}