Я действительно новичок в мире Java, и я сейчас учусь, IFs / FORs / WHILEs и так далее.Чтобы сохранить интерес к предмету, я позволил своей стороне зануда освободиться:)
Я хочу смоделировать 1000 боев между Героем и Гоблином.Оба имеют свои характеристики и бросок d20, чтобы определить, попали ли они ((d20 + бонус)> вражеская броня).Если они бьют, они наносят соответствующий урон и продолжают обмениваться взрывами, пока один из них не умрет.Каждый раз, когда HP гоблинов падает ниже 0, герой получает «победу», в противном случае он получает «поражение».
Симуляция прерывается, когда цикл повторяется в течение 1000 игр, показывая, сколько побед и пораженийу героя было.
Это мой ошибочный код. Он продолжает бесконечно подсчитывать количество побед, не сбрасывая HP гоблинов и героев, также не считая количество поражений.Может ли кто-нибудь использовать простые конструкции, чтобы помочь мне понять, где я ошибаюсь?
import java.util.Random;
public class Random2 {
public static void main(String[] args) {
Random rand = new Random();
int wins = 0, defeats = 0;
int hpHero = 20, armorHero = 8, dmgHero = 4, bonusHero = 1;
int hpGoblin = 10, armorGoblin = 5, dmgGoblin = 3, bonusGoblin = 1;
for (int played = 0; played <= 1000; played++) {
while (hpHero > 0 || hpGoblin > 0) {
int d20Hero = rand.nextInt(19);
d20Hero += 1;
if ((bonusHero + d20Hero) > armorGoblin) {
System.out.println("You hit the goblin with a die result of " + (bonusHero + d20Hero));
hpGoblin -= dmgHero;
System.out.println("HP Goblin: " + hpGoblin);
if (hpGoblin > 0) {
int d20Goblin = rand.nextInt(19);
d20Goblin += 1;
if ((bonusGoblin + d20Goblin) > armorHero) {
System.out.println("Goblin hit the human with a die result of " + (bonusGoblin + d20Goblin));
hpHero -= dmgGoblin;
System.out.println("HP Hero: " + hpHero);
if (hpHero < 1) {
defeats++;
System.out.println("Defeats are: " + defeats);
}
}
} else {
wins++;
System.out.println("Wins are: " + wins);
}
}
}
}
}
}