Releasing version one.
This commit is contained in:
@@ -1,15 +1,185 @@
|
||||
package org.project;
|
||||
|
||||
import org.project.entity.enemies.*;
|
||||
import org.project.entity.players.Assassin;
|
||||
import org.project.entity.players.Knight;
|
||||
import org.project.entity.players.Player;
|
||||
import org.project.entity.players.Wizard;
|
||||
import org.project.item.armors.Armor;
|
||||
import org.project.item.armors.KnightArmor;
|
||||
import org.project.item.weapons.Sword;
|
||||
import org.project.item.weapons.Weapon;
|
||||
import org.project.location.Location;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
// TODO: ADD LOCATIONS TO YOUR GAME
|
||||
List<Location> locations = new ArrayList<>();
|
||||
|
||||
// TODO: IMPLEMENT GAMEPLAY
|
||||
public static void printBorder() {
|
||||
for (int i = 0; i < 40; i++)
|
||||
System.out.print("-");
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
public static void printBorder(int x) {
|
||||
for (int i = 0; i < 15; i++)
|
||||
System.out.println();
|
||||
for (int i = 0; i < x; i++)
|
||||
System.out.print("-");
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
public static int moveSelector() {
|
||||
System.out.println("Choose your move:");
|
||||
System.out.println("1. Light attack (Mana: 0) | 2. Normal attack (mana: 2) | 3. Heavy attack (mana: 3)");
|
||||
System.out.println("4. Heal (5 mana) | 5. Skip");
|
||||
Scanner in = new Scanner(System.in);
|
||||
while (true) {
|
||||
int answer = in.nextInt();
|
||||
if (answer == 1 || answer == 2 || answer == 3 || answer == 4 || answer == 5)
|
||||
return answer;
|
||||
System.out.println("Invalid input try again.");
|
||||
}
|
||||
}
|
||||
|
||||
private static void fightEnemy(Player player, Location location, String enemyName, String locationDesc) {
|
||||
String RED = "\u001B[31m";
|
||||
String YELLOW = "\u001B[33m";
|
||||
String RESET = "\u001B[0m";
|
||||
|
||||
System.out.printf("You're in the %s fighting a %s%s%s!\n", locationDesc, RED, enemyName, RESET);
|
||||
|
||||
while (player.isAlive() && location.getEnemy().getHP() > 0) {
|
||||
// Player's turn: up to 5 actions
|
||||
for (int i = 0; i < 5; i++) {
|
||||
System.out.printf("%s | %sHP%s: %d, %sMP%s: %d\n",
|
||||
player.getName(), RED, RESET, player.getHP(), YELLOW, RESET, player.getMP());
|
||||
printBorder();
|
||||
System.out.printf("%s | %sHP%s: %d, %sMP%s: %d\n",
|
||||
enemyName, RED, RESET, location.getEnemy().getHP(), YELLOW, RESET, location.getEnemy().getMP());
|
||||
System.out.println();
|
||||
|
||||
switch (moveSelector()) {
|
||||
case 1: // Base Attack
|
||||
location.getEnemy().takeDamage(player.getBaseDamage());
|
||||
break;
|
||||
case 2: // Normal Attack (2 mana)
|
||||
if (player.useMana(2)) {
|
||||
player.attack(location.getEnemy());
|
||||
} else {
|
||||
System.out.println("Not enough mana for Normal Attack!");
|
||||
i--;
|
||||
}
|
||||
break;
|
||||
case 3: // Heavy Attack (3 mana)
|
||||
if (player.useMana(3)) {
|
||||
player.heavyAttack(location.getEnemy());
|
||||
} else {
|
||||
System.out.println("Not enough mana for Heavy Attack!");
|
||||
i--;
|
||||
}
|
||||
break;
|
||||
case 4: // Heal (5 mana)
|
||||
if (player.useMana(5)) {
|
||||
player.heal(20);
|
||||
} else {
|
||||
System.out.println("Not enough mana to Heal!");
|
||||
i--;
|
||||
}
|
||||
break;
|
||||
}
|
||||
printBorder();
|
||||
|
||||
// If enemy died or player died, end the player's turn early
|
||||
if (location.getEnemy().getHP() <= 0 || !player.isAlive()) {
|
||||
location.getEnemy().getKilled();
|
||||
i = 5;
|
||||
}
|
||||
}
|
||||
|
||||
// Enemy's turn
|
||||
if (location.getEnemy().getHP() > 0) {
|
||||
for (int i = 0; i < 5; i++) {
|
||||
location.getEnemy().attack(player);
|
||||
printBorder();
|
||||
if (!player.isAlive())
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Restore mana after each full round
|
||||
player.fillMana(6);
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String RED = "\u001B[31m";
|
||||
String YELLOW = "\u001B[33m";
|
||||
String RESET = "\u001B[0m";
|
||||
String GREEN = "\u001B[32m";
|
||||
|
||||
printBorder();
|
||||
Scanner input = new Scanner(System.in);
|
||||
System.out.println("Enter your name:");
|
||||
String name = input.next();
|
||||
printBorder();
|
||||
|
||||
Weapon sword = new Sword();
|
||||
Armor armor = new KnightArmor();
|
||||
Player player = null;
|
||||
|
||||
while (true) {
|
||||
System.out.println("Chose your character:");
|
||||
System.out.printf("1. Knight | %sHP%s: 100, %sMP%s: 10\n", RED, RESET, YELLOW, RESET);
|
||||
System.out.printf("2. Wizard | %sHP%s: 150, %sMP%s: 10\n", RED, RESET, YELLOW, RESET);
|
||||
System.out.printf("3. Assassin | %sHP%s: 80 , %sMP%s: 20\n", RED, RESET, YELLOW, RESET);
|
||||
player = switch (input.nextInt()) {
|
||||
case 1 -> new Knight(name, sword, armor);
|
||||
case 2 -> new Wizard(name, sword, armor);
|
||||
case 3 -> new Assassin(name, sword, armor);
|
||||
default -> null;
|
||||
};
|
||||
if (player == null) {
|
||||
System.out.println("Invalid input try again.");
|
||||
} else
|
||||
break;
|
||||
}
|
||||
|
||||
Location overworld = new Location("Overworld", new Vampire(sword));
|
||||
Location village = new Location("Village", new Goblin(sword));
|
||||
Location nether = new Location("Nether", new Skeleton(sword));
|
||||
Location end = new Location("End", new Dragon());
|
||||
|
||||
// Fight each enemy
|
||||
fightEnemy(player, overworld, "Vampire", "Overworld");
|
||||
if (!player.isAlive()) {
|
||||
System.out.println("You lost!");
|
||||
return;
|
||||
}
|
||||
|
||||
fightEnemy(player, village, "Goblin", "Village");
|
||||
if (!player.isAlive()) {
|
||||
System.out.println("You lost!");
|
||||
return;
|
||||
}
|
||||
|
||||
fightEnemy(player, nether, "Skeleton", "Nether");
|
||||
if (!player.isAlive()) {
|
||||
System.out.println("You lost!");
|
||||
return;
|
||||
}
|
||||
fightEnemy(player, end, "Dragon","End");
|
||||
if (!player.isAlive()) {
|
||||
System.out.println("You lost!");
|
||||
return;
|
||||
}
|
||||
printBorder();
|
||||
System.out.println(GREEN + " " + RESET);
|
||||
System.out.println(RED + " VICTORY! " + RESET);
|
||||
System.out.println(GREEN + " You have conquered all enemies! " + RESET);
|
||||
System.out.println(GREEN + " The realm is safe, brave warrior. " + RESET);
|
||||
System.out.println();
|
||||
printBorder();
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user