2017-04-21 6 views
0

Also praktiziere ich grundlegendes Java, indem ich einen Pokemon-Kampfsimulator (mit JOption Panes) erstelle.Speichern des Rückgabewerts einer Zufallszahl als lokale Variable?

Ich benutze die folgende Methode, um den Angriffswert des Pokémon als Maximum zu nehmen, und setze zur Vereinfachung einen Wert von 0 ein.

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

Hier ist, wo ich die Methode aufgerufen habe.

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."); 

} 

Das scheint Schaden randomisiert zu werden, wie ich erwartet hatte, aber es wird immer sagen: „Charmander tut 0 Schaden Rattata und Rattata hat x Gesundheit links“.

Ist es möglich, den RandomDamage-Wert von der Gesundheit zu subtrahieren und diesen Wert dann in meinem JOption-Fenster anzuzeigen?

Vielen Dank!

+0

, was der max und min Zahlen Sie passieren? – Yahya

+0

Sie müssen das Ergebnis von randomDamage() in eine Variable speichern (Zeile 9) – Hani

Antwort

1

Sie müssen zuerst den Rückgabewert randomDamage (d. H. In pokemonX.randomDamage) speichern, wenn Sie ihn mehrmals verwenden möchten.

Beispiel (unter der Annahme Pokemon s hat ein int randomDamage Mitglied):

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

Dies tat genau das, was ich brauchte. Einfach genug. Vielen Dank! – Sean

Verwandte Themen