2017-04-21 7 views
0

私は(JOption Panesを使って)ポケモンバトルシミュレータを作って、基本的なJavaを練習しています。乱数の戻り値をローカル変数として格納していますか?

私は以下の方法を使ってポケモンの攻撃値を最大値にし、簡単にするために最小値を0に設定しています。

public static int randomDamage(int min, int max) { 
    int range = (max - min) + 1; 
    int randomDamage = (int)(Math.random() * range) + min; 
    return randomDamage; 

ここではメソッドを呼び出しています。

public static void battle(Pokemon pokemon1, Pokemon pokemon2) { 
    showMessageDialog(null, pokemon2.name + "'s stats are: \n Health: " 
      + pokemon2.health + "\n Attack: " + pokemon2.attack + "\n Speed: " + pokemon2.speed); 
    showMessageDialog(null, pokemon1.name + " begins the fight against " + pokemon2.name); 
    do { 

     if (pokemon1.health > 0 && pokemon2.health > 0) { 
      showMessageDialog(null, pokemon1.name + " attacks " + pokemon2.name); 
      pokemon2.health = pokemon2.health - randomDamage(0,pokemon1.attack); 
      showMessageDialog(null, pokemon1.name + " does " + pokemon1.randomDamage + " damage to " + 
        pokemon2.name + " and " + pokemon2.name + " has " + pokemon2.health + " left."); 
     } 

     if (pokemon1.health > 0 && pokemon2.health > 0) { 
      showMessageDialog(null, pokemon2.name + " attacks " + pokemon1.name); 
      pokemon1.health = pokemon1.health - pokemon2.attack; 
      showMessageDialog(null, pokemon2.name + " does " + pokemon2.attack + " damage to " + 
        pokemon1.name + " and " + pokemon1.name + " has " + pokemon1.health + " left."); 
     } 


    } while (pokemon1.health > 0 && pokemon2.health > 0); 
    if (pokemon1.health < 1) showMessageDialog(null, pokemon1.name + " has been reduced to 0 health. " 
      + pokemon1.name + " has lost the fight."); 
    else showMessageDialog(null, pokemon2.name + " has been reduced to 0 health. " 
      + pokemon2.name + " has lost the fight."); 

} 

被害は、私が期待通りにランダム化しているように見えるが、それは常に「ヒトカゲがx健康はコラッタとコラッタに0ダメージ残しているん」と言うだろう。

healthDamageの値を減算して、その値をJOptionウィンドウに表示することはできますか?

ありがとうございました!

+0

あなたが合格最大と最小の数字は何ですか? – Yahya

+0

randomDamage()の結果を変数(Line 9)に保存する必要があります。 – Hani

答えて

1

複数回使用する場合は、最初にrandomDamage(つまりpokemonX.randomDamage)の戻り値を格納する必要があります。

例(Pokemon秒を想定しint randomDamageメンバーを持っている):

pokemon1.randomDamage = randomDamage(0,pokemon1.attack); 
pokemon2.health = pokemon2.health - pokemon1.randomDamage; 
showMessageDialog(null, pokemon1.name + " does " + pokemon1.randomDamage + " damage to " + pokemon2.name + " and " + pokemon2.name + " has " + pokemon2.health + " left."); 
+0

これは私が必要としていたものです。十分に簡単です。ありがとうございました! – Sean

関連する問題