91 lines
3.8 KiB
Java
91 lines
3.8 KiB
Java
import java.util.Random;
|
|
import java.util.Scanner;
|
|
|
|
public class FightingGame {
|
|
public static void main(String[] args) {
|
|
Scanner scanner = new Scanner(System.in);
|
|
Random random = new Random();
|
|
|
|
System.out.println("Choose your class: Fighter, Ranger, Mage");
|
|
String playerClass = scanner.nextLine();
|
|
|
|
Player player;
|
|
if (playerClass.equalsIgnoreCase("Fighter")) {
|
|
player = new Player("Fighter", 100, 15, "Fighter");
|
|
} else if (playerClass.equalsIgnoreCase("Ranger")) {
|
|
player = new Player("Ranger", 75, 20, "Ranger");
|
|
} else {
|
|
player = new Player("Mage", 50, 30, "Mage");
|
|
}
|
|
|
|
// Enemy pool
|
|
Enemy[] enemies = {
|
|
new Enemy("Bear", 80, 10),
|
|
new Enemy("Slime", 50, 5),
|
|
new Enemy("Herr Steiner der Mächtige", 150, 25)
|
|
};
|
|
|
|
boolean playing = true;
|
|
while (playing && player.isAlive()) {
|
|
System.out.println("\nA new enemy appears!");
|
|
Enemy enemy = enemies[random.nextInt(enemies.length)];
|
|
enemy.resetHealth(); // Reset the enemy's health
|
|
enemy.displayInfo();
|
|
|
|
while (enemy.isAlive() && player.isAlive()) {
|
|
System.out.println("\nChoose an action: Attack / Defend / Run");
|
|
String action = scanner.nextLine();
|
|
|
|
if (action.equalsIgnoreCase("Attack")) {
|
|
System.out.printf("You attack %s for %d damage!%n",
|
|
enemy.getName(), player.getAttackPower());
|
|
enemy.takeDamage(player.getAttackPower());
|
|
|
|
if (enemy.isAlive()) {
|
|
System.out.printf("%s attacks you for %d damage!%n",
|
|
enemy.getName(), enemy.getAttackPower());
|
|
player.takeDamage(enemy.getAttackPower());
|
|
} else {
|
|
System.out.printf("You defeated %s!%n", enemy.getName());
|
|
}
|
|
} else if (action.equalsIgnoreCase("Defend")) {
|
|
System.out.println("You defend yourself and take less damage!");
|
|
int reducedDamage = Math.max(0, enemy.getAttackPower() / 2);
|
|
System.out.printf("%s attacks you for %d damage!%n",
|
|
enemy.getName(), reducedDamage);
|
|
player.takeDamage(reducedDamage);
|
|
} else if (action.equalsIgnoreCase("Run")) {
|
|
System.out.println("You attempt to flee...");
|
|
if (random.nextBoolean()) {
|
|
System.out.println("You successfully escaped!");
|
|
break;
|
|
} else {
|
|
System.out.println("You failed to escape!");
|
|
System.out.printf("%s attacks you for %d damage!%n",
|
|
enemy.getName(), enemy.getAttackPower());
|
|
player.takeDamage(enemy.getAttackPower());
|
|
}
|
|
} else {
|
|
System.out.println("Invalid action! Try again.");
|
|
}
|
|
|
|
System.out.printf("Your Health: %d | %s's Health: %d%n",
|
|
player.getHealth(), enemy.getName(), enemy.getHealth());
|
|
}
|
|
|
|
if (!player.isAlive()) {
|
|
System.out.println("You have been defeated! Game over.");
|
|
playing = false;
|
|
} else if (!enemy.isAlive()) {
|
|
System.out.println("Do you want to continue? (yes/no)");
|
|
String continueGame = scanner.nextLine();
|
|
if (continueGame.equalsIgnoreCase("no")) {
|
|
playing = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
System.out.println("Thanks for playing!");
|
|
scanner.close();
|
|
}
|
|
}
|