2016-11-08 8 views
0

私はユーザーが金を見つけなければならない単純なJavaゲームを構築しています。 Orc、Goblin、Poopのようないくつかの障害物があります。変数はjavaで複数の列挙型定数を持つことができますか?

私がしようとしているのは、Cell and Boardクラスを作成していることです。私のセルクラスの内部

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

と私は理事会クラスで2次元を作り、

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); 
    } 
} 

私の質問は、オークとゴブリンの場合には、同じセル、Iたくあり、ということですそれらを同じ細胞の両方のモンスターに保つ。同じセルに両方の障害や複数の障害をどのように保つことができるのでしょうか?ありがとうございました!これを達成するための

+0

コードには確かに書式設定が必要です。配列のセルに2つの値を保存することはできません。たぶんマップは、複数の値であなたのためにそれを解決するかもしれません - > http://stackoverflow.com/questions/4956844/hashmap-with-multiple-values-under-the-same-key – nullpointer

答えて

2

一つの方法は、セルクラスがセルに現在あるすべてのモンスター/物事のリストを保持することです(列挙型を使用して、それはすでに入手可能です)

より「低レベル」アプローチは、セルにIntegerを使用し、ビットフラグを使用して同じセル上の複数の障害をモデル化することです。

更新:@JimGarrisonによって指摘あなたが列挙型の複数のインスタンスを持っている必要がありますまで、EnumSetのアプローチが唯一の作品として、私は@ajbに同意 が、この場合にはEnum Set

を使用する必要があります1つのセルの値。

+2

整数を使用する必要はありません - Java提供'EnumSet'。 (いずれの方法でも、同じ障害物を複数持つことができない場合にのみ動作します) – ajb

+0

@ajb Google EnumSetをGoogleに登録できますか? – jaykodeveloper

+0

@Jay確かに、またはjavadoc [here](http://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html)にアクセスできます – ajb

-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); 
    } 
} 
関連する問題