2017-10-09 17 views
1

私の友人は "ゲーム"を作って、if - else文の束を使って剣やものを選ぶことができました。私はランダムなモンスターがArrayListから生まれたテキストベースのゲームを作って、彼の頭を上げようとしています。各モンスターには名前とHP値が必要です。私は、ランダムなモンスターを選択できるようにする必要があると私はそれは私が使用してのArrayListをスクランブルすることができますしたいと思います:1つのStringと1つのintの2つの値を持つ単一のArrayListを作成するにはどうすればよいですか?

Collections.shuffle(Monster); 

私は前に多次元配列を作ったが、私が作るするかどうかはわかりません各スポット場所の2つの値を持つArrayListここで

これまでのところそれで私の試みです:

List<String> Inventory = new ArrayList<String>(); 

    List<double[]> Monsters = new ArrayList<double[]>(2); 
    List<String> Monster = new ArrayList<String>(); 

    Monster.add("Goblin"); 
    Monster.add("Josh"); 
    Monster.add("Gremlin"); 
    Monster.add("Unicorn"); 
    Monster.add("Possesed Elf"); 
    Monster.add("Shmorple"); 

    // Can I use Monsters.add(Monster);? 

は編集:私はゲームを終えて、私は、オブジェクトを作成するためにクラスを使用する方法を学ぶことになりました。それを提案した皆さん、ありがとうございます。私はちょうどいくつかの回答を少しだけ学んだ!

+2

両方の値をカプセル化してインスタンスをリストに追加するクラスを作成します。 – shmosel

+1

Javaの命名規則に従ってください。特にパブリックフォーラムに投稿するときに。 Java変数では、 'camelCase'では常に** ** ** PascalCaseはクラスのために予約されています。 –

+0

'' 'は、Javaでは(少なくとも現時点では)** doubleが**基本データ型**であるため、不可能です。代わりにラッパークラス 'Double'を使用する必要があります。 – Zabuza

答えて

0

最初の文字大文字と最初の下の文字ケースとクラスとJavaのベストプラクティスと名前の変数やメソッドに従うべきであることを覚えています!(まだ私はこのウェブサイトにコードを正しく配置する方法を理解していません)

public class Monster { 
private String name; 
private int health = 10; 
private int damage = 5; 


public Monster(String name, int Health, int Damage){ 
    this.name = name; 
    this.health = Health; 
    this.damage = Damage; 
} 

public String getName(){ 
    return name; 
} 

public int getHp(){ 
    return health; 
} 

public void setHP(int health){ 
    this.health = health; 
} 

public int getDmg() { 
    return damage; 
} 

public void setDmg(int damage) { 
    this.damage = damage; 
} 

} 
+0

次に、回答を投稿した他の人たちにあなたの問題を尋ねたのです – Ravi

4

整数値と文字列値に1対1のマッピング関係がある場合は、HashMapのArrayListを使用できます。

これらの2つの属性を持つ新しいクラスを作成し、そのクラスから作成されたオブジェクトを保持するためにArrayListを使用することができます。

public class Monster{ 
    private int health; 
    private String name; 
} 

List<Monster> monsterList = new ArrayList<>(); 

Collections.shuffle(monsterList); //to shuffle it 
0

アレイには、同じタイプのオブジェクトが格納されるため、技術的にはできません。しかし、オブジェクトがここにモンスターなので、どちらかあなたはモンスターの配列などのように、そのリストからシャッフル:モンスターがorg.apache.commons.lang3.tupleから個々のプロパティを保持するオブジェクト

または

使用のペアである

List<Monster> monsters = new ArrayList<>()パッケージ、あなたが

List<Pair<String, Integer>> monsters = new ArrayList<>() monsters.add(Pair.of("monster_name", 20));

0

を持っているので、あなたがクラスに精通している場合、私は知らない(しかし、あなたは、Javaを使用している場合、あなたがしなければなりません)。

あなたが望むのは、ランダムにモンスターをリストから選んで、まず「モンスター」クラスをモデル化する必要があることです。あなたはモンスターのあなたのリストを作成することができます。この時点で

public class Monster 
{ 
    private String name; 
    private int hp; 

    public Monster(String name, int hp) 
    { 
      this.name = name; 
      this.hp = hp; 
    } 
    public String getName(){return name;} 
    public int getHP(){return hp;} 

} 

: あなたは以下のクラスを作成することができるように、各モンスターは、名前と生活(整数)を有していると

List<Monster> monsters = new ArrayList<>(); 

あなたは今、次のようにそれを移入することができます

monsters.add(new Monster("Goblin", 10)); 
monsters.add(new Monster("Possesed Elf", 40)); 

等...

を今、あなたは、

Collection.shuffle(monsters); 
Monster randomMonster = monsters.get(0); 
System.out.println("Random monster appear: " + randomMonster.getName()); 

を活用し、あなたは私がモンスター配列のクラスを作ることになった

関連する問題