Ich versuche, ein RPG für ein Schulprojekt zu machen. Das Spiel endet, wenn Sie den Boss besiegen. Sie können zufällige Monster trainieren und bekämpfen, bevor Sie den Boss herausfordern. Das Problem, das ich gerade habe, ist, dass die Schleife in der Kampfmethode nicht aufhört.Eine Schleife wird nicht aufhören
import java.util.Scanner;
import java.util.Random;
public class A{
public static void main(String []args){
Scanner get = new Scanner(System.in);
Random rng = new Random();
int day = 0;
int choice;
String playerName;
int playerHealth = 10; int playerAttack = 5; int playerDefense = 5;
int boss1Health = 1000; int boss1Attack = 900; int boss1Defense = 900;
int slimeHealth = 100; int slimeAttack = 20; int slimeDefense = 20;
int goblinHealth = 80; int goblinAttack = 40; int goblinDefense = 10;
System.out.print("What is your name? ");
playerName = get.next();
System.out.println("...Welcome, " + playerName);
while(bothAreAlive(playerHealth, boss1Health)){
++day;
while(true){
action(day);
choice = get.nextInt();
if(choice == 1){
fight(playerName, playerHealth, playerAttack, playerDefense, "Skeleton King", boss1Health, boss1Attack, boss1Defense);
break;
}
if(choice == 2){
int encounter = rng.nextInt(2);
if(encounter == 0){
slimeHealth = 100;
fight(playerName, playerHealth, playerAttack, playerDefense, "Slime", slimeHealth, slimeAttack, slimeDefense);
}
else if(encounter == 1){
goblinHealth = 80;
fight(playerName, playerHealth, playerAttack, playerDefense, "Goblin", goblinHealth, goblinAttack, goblinDefense);
}
break;
}
if(choice == 3){
playerHealth += 10;
playerAttack += 5;
playerDefense += 5;
break;
}
if(choice == 4){
showStats(playerName, playerHealth, playerAttack, playerDefense);
}
}
}
}
public static int attack(String attacker, String defender, int aAttack, int dDefense, int dHealth){
int damage = Math.max(0, aAttack - dDefense);
System.out.println("\n" + attacker + " did " + damage + " damage to " + defender + ".");
dHealth = dHealth - damage;
System.out.println("\n" + defender + "'s health is now " + dHealth);
return dHealth;
}
public static int fight(String playerName, int playerHealth, int playerAttack, int playerDefense, String enemyName, int enemyHealth, int enemyAttack, int enemyDefense){
Random rng = new Random();
while(bothAreAlive(playerHealth, enemyHealth)){
int playerChance = rng.nextInt(5);
int enemyChance = rng.nextInt(5);
if(enemyChance > 1){
attack(enemyName, playerName, enemyAttack, playerDefense, playerHealth);
}
else{
System.out.println("\n" + enemyName + " missed!");
}
if(playerChance > 1){
attack(playerName, enemyName, playerAttack, enemyDefense, enemyHealth);
}
else{
System.out.println("\n" + playerName + " missed!");
}
}
if(enemyHealth >= 0){
System.out.println(enemyName + " has won...");
}
else if(playerHealth >= 0){
System.out.println("You have won!");
}
return enemyHealth;
}
private static boolean bothAreAlive(int yourHealth, int enemyHealth){
return yourHealth > 0 && enemyHealth > 0;
}
public static void action(int day){
System.out.println("Day: " + day);
System.out.println("\nWhat will you do today?\n(1)Fight boss\n(2)Fight random monster\n(3)Train\n(4)Show stats");
}
public static void showStats(String playerName, int health, int attack, int defense){
System.out.println("Name: " + playerName);
System.out.println("Health: " + health);
System.out.println("Attack: " + attack);
System.out.println("Defense: " + defense);
}
}