diff --git a/Java-Knight/src/main/java/org/project/Main.java b/Java-Knight/src/main/java/org/project/Main.java index 05848a7..351c421 100644 --- a/Java-Knight/src/main/java/org/project/Main.java +++ b/Java-Knight/src/main/java/org/project/Main.java @@ -11,6 +11,12 @@ import java.util.Random; import java.util.Scanner; public class Main { + + public static final String RESET = "\u001B[0m"; + public static final String RED_TEXT = "\u001B[31m"; + public static final String YELLOW_TEXT = "\u001B[33m"; + public static final String BLUE_TEXT = "\u001B[34m"; + public static void main(String[] args) { Scanner scanner = new Scanner(System.in); @@ -27,13 +33,13 @@ public class Main { Location castle = new Location("crimson castle", vampire); Location[] locations = {forest, catacombs, castle}; // An array of the location except peak where is the Dragon(final boss) located - System.out.println("\t=============== Java Knight ===============\n"); + System.out.println(BLUE_TEXT + "\t=============== Java Knight ===============\n" + RESET); boolean running = true; while(running){ - System.out.println("\tChoose your option:"); + System.out.println(YELLOW_TEXT + "\tChoose your option:"); System.out.println("\t1. Start game" + - " 2. Exit"); + " 2. Exit" + RESET); int option = scanner.nextInt(); if(option == 1){ startGame(locations); @@ -60,28 +66,28 @@ public class Main { int option = 0; while(option > 3 || option < 1){ System.out.println("\n Select your character: (Enter number)"); - System.out.println("\t1. Knight (fights with a sword)\n" + - "\t2. Assassin (fights with dual daggers)\n" + - "\t3. Wizard (fights with his magic staff)"); + System.out.println("\t1. ⚔\uFE0F Knight (fights with a sword)\n" + + "\t2. \uD83D\uDD2A Assassin (fights with dual daggers)\n" + + "\t3. \uD83E\uDDD9 Wizard (fights with his magic staff)"); if (scanner.hasNextInt()) { option = scanner.nextInt(); } else { - System.out.println("\tInvalid input! Please enter a number."); + System.out.println(RED_TEXT + "\tInvalid input! Please enter a number." + RESET); scanner.next(); } } switch (option){ case 1: player = new Knight(name); - System.out.printf("\n\tYour Character: %s, Your Name: %s\n\n", "Knight", player.getName()); + System.out.printf("\n\tYour Character: %s, Your Name: %s\n\n", " ⚔\uFE0F Knight", player.getName()); break; case 2: player = new Assassin(name); - System.out.printf("\n\tYour Character: %s, Your Name: %s\n\n", "Assassin", player.getName()); + System.out.printf("\n\tYour Character: %s, Your Name: %s\n\n", " \uD83D\uDD2A Assassin", player.getName()); break; case 3: player = new Wizard(name); - System.out.printf("\n\tYour Character: %s, Your Name: %s\n\n", "Wizard", player.getName()); + System.out.printf("\n\tYour Character: %s, Your Name: %s\n\n", " \uD83E\uDDD9 Wizard", player.getName()); break; default: player = null; @@ -94,7 +100,7 @@ public class Main { loc = setLocation(loc, locations, player, random, scanner); Enemy enemy = loc.getEnemy(); - System.out.println("\t=============== Prepare to fight ==============="); + System.out.println(BLUE_TEXT + "\t=============== Prepare to fight ===============" + RESET); while(player.isAlive()){ @@ -112,7 +118,7 @@ public class Main { enemy.heal(); // Key dropping (50% chance) boolean[] logics = {false, true}; - boolean drop = true; + boolean drop = logics[random.nextInt(logics.length)]; if(enemy.hasKey() && drop){ player.addKey(enemy); } @@ -123,7 +129,7 @@ public class Main { // the final battle, Dragon fight if(player.getKeys() == 3){ - System.out.println("\t=============== Entering Ashen Peak to fight the Dragon ==============="); + System.out.println(BLUE_TEXT + "\t=============== Entering Ashen Peak to fight the Dragon \uD83D\uDC09 ===============" + RESET); enemy = new Dragon(); loc = new Location("ashen peak", enemy); @@ -153,13 +159,13 @@ public class Main { player.getName(), currentLocation.getEnemy().getName(), currentLocation.getEnemy().getWeapon().getName(), currentLocation.getName()); int option = 0; while(option > 2 || option < 1){ - System.out.println("\tChoose your option: "); - System.out.println("\t1. Fight " + currentLocation.getEnemy().getName() + - "\t2. Change location"); + System.out.println(YELLOW_TEXT + "\tChoose your option: "); + System.out.println("\t1. Fight" + currentLocation.getEnemy().getName() + + "\t\t2. Change location" + RESET); if (scanner.hasNextInt()) { option = scanner.nextInt(); } else { - System.out.println("\tInvalid input! Please enter a number."); + System.out.println(RED_TEXT + "\tInvalid input! Please enter a number." + RESET); scanner.next(); } } @@ -199,16 +205,16 @@ public class Main { option = scanner.nextInt(); if(option != 1 && player.getMp() <= 0){ // when mana runs out the only available action is light attack - System.out.println("\tYou are out of Mana. You can only choose \"1. Light attack\""); + System.out.println(RED_TEXT + "\tYou are out of Mana. You can only choose \"1. Light attack\"" + RESET); option = 0; } else if(option == 4 && player.getHp() == player.getMaxHP()){ - System.out.println("\tYour HP is at its maximum. Choose another option."); + System.out.println(RED_TEXT + "\tYour HP is at its maximum. Choose another option." + RESET); option = 0; } } else { - System.out.println("\tInvalid input! Please enter a number."); + System.out.println(RED_TEXT + "\tInvalid input! Please enter a number." + RESET); scanner.next(); } } @@ -224,7 +230,7 @@ public class Main { player.heavyAttack(enemy); } else{ - System.out.println("\tYou don\'t have enough Mana"); + System.out.println(RED_TEXT + "\tYou don't have enough Mana" + RESET); playerMove(player, enemy, scanner); } break; @@ -233,7 +239,7 @@ public class Main { player.defend(true); } else{ - System.out.println("\tYou don\'t have enough Mana"); + System.out.println(RED_TEXT + "\tYou don't have enough Mana" + RESET); playerMove(player, enemy, scanner); } break; @@ -242,7 +248,7 @@ public class Main { player.heal( (int)((0.2)*player.getMaxHP()) ); } else{ - System.out.println("\tYou don\'t have enough Mana"); + System.out.println(RED_TEXT + "\tYou don't have enough Mana" + RESET); playerMove(player, enemy, scanner); } break; @@ -251,7 +257,7 @@ public class Main { player.specialAbility(enemy); } else{ - System.out.println("\tYou don\'t have enough Mana"); + System.out.println(RED_TEXT + "\tYou don't have enough Mana" + RESET); playerMove(player, enemy, scanner); } break; @@ -292,7 +298,7 @@ public class Main { } public static void showStatus(Player player, Enemy enemy){ - System.out.printf("\t[%s - %d/%d HP | %d/%d Mana]\t[%s - %d/%d HP]\n\n", + System.out.printf("\n\t[%s - %d/%d HP | %d/%d Mana]\n\t[%s - %d/%d HP]\n\n", player.getName(), player.getHp(), player.getMaxHP(), player.getMp(), player.getMaxMP(), enemy.getName(), enemy.getHp(), enemy.getMaxHP() ); diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java index 299a568..d1f851d 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java @@ -9,6 +9,9 @@ public class Dragon extends Enemy{ private static int maxHP = 220; private int hp = maxHP; + public static final String RESET = "\u001B[0m"; + public static final String GREEN_TEXT = "\u001B[32m"; + public Dragon(){ Weapon DragonWeapon = new Flame(); super(maxHP, DragonWeapon); @@ -22,7 +25,7 @@ public class Dragon extends Enemy{ @Override public void specialAbility(Entity target) { - System.out.printf("\t%s breathes fire!\n", getName()); + System.out.printf("\t%s breathes fire! \uD83D\uDD25\n", getName()); target.takeDamage(weapon.getDamage()); } @@ -32,13 +35,13 @@ public class Dragon extends Enemy{ @Override public String getName(){ - return "Dragon"; + return " \uD83D\uDC09 Dragon"; } @Override public boolean isAlive() { if(hp <= 0){ - System.out.printf("\t=============== Victory! ===============\n", getName()); + System.out.printf(GREEN_TEXT + "\t=============== Victory! ===============\n" + RESET, getName()); alive = false; } return alive; diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java b/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java index 7bdb38d..8892fbf 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Enemy.java @@ -13,6 +13,9 @@ public abstract class Enemy implements Entity { protected boolean alive = true; protected boolean key = true; + public static final String BLUE_TEXT = "\u001B[34m"; + public static final String RESET = "\u001B[0m"; + public Enemy(int hp, Weapon weapon) { this.hp = hp; maxHP = hp; // TODO: fix this from superclasses @@ -22,7 +25,7 @@ public abstract class Enemy implements Entity { @Override public void takeDamage(int damage) { hp -= damage; - System.out.printf("\t%s took %d damage\n", getName(), damage); + System.out.printf("\t%s took %d damage \uD83D\uDCA5\n", getName(), damage); } public void attack(Entity target) { @@ -37,7 +40,7 @@ public abstract class Enemy implements Entity { @Override public void defend(boolean value) { if(value) { - System.out.printf("\t%s used Defend, You cannot attack in your next turn!\n", getName()); + System.out.printf("\t%s used Defend, You cannot attack in your next turn! \uD83D\uDEE1\uFE0F\n", getName()); defending = true; return; } @@ -46,7 +49,7 @@ public abstract class Enemy implements Entity { @Override public void heal(int health) { - System.out.printf("\t%s used Heal!\n", getName()); + System.out.printf("\t%s used Heal! ❤\uFE0F\n", getName()); hp += health; if (hp > maxHP) { hp = maxHP; @@ -103,7 +106,7 @@ public abstract class Enemy implements Entity { @Override public boolean isAlive() { if(hp <= 0){ - System.out.printf("\t=============== You defeated %s ===============\n\tGoing to the next Location...", getName()); + System.out.printf(BLUE_TEXT + "\t=============== You defeated %s =============== " + RESET + "\n\tGoing to the next Location...", getName()); alive = false; } diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java b/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java index e370503..7f67cd2 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java @@ -18,10 +18,10 @@ public class Goblin extends Enemy{ @Override public void specialAbility(Entity target) { if(target.isDefending()){ - System.out.printf("\t%s is defending. %s lost his attack.\n", target.getName(), getName()); + System.out.printf("\t%s is defending. %s lost his attack. \uD83D\uDEE1\uFE0F\n", target.getName(), getName()); return; } - System.out.printf("\t%s used critical hit!\n", getName()); + System.out.printf("\t%s used critical hit! \uD83D\uDCA5\n", getName()); target.takeDamage(criticalHit_damage); } @@ -31,7 +31,7 @@ public class Goblin extends Enemy{ @Override public String getName(){ - return "Goblin"; + return " \uD83D\uDC7A Goblin"; } } \ No newline at end of file diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java b/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java index 2844300..7a2655c 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java @@ -16,7 +16,7 @@ public class Skeleton extends Enemy{ @Override public void specialAbility(Entity target) { - System.out.printf("\t%s revived itself!\n", getName()); + System.out.printf("\t%s revived itself! ❤\uFE0F\n", getName()); hp = maxHP/2; // revive (once per battle) revived = true; } @@ -27,7 +27,7 @@ public class Skeleton extends Enemy{ @Override public String getName(){ - return "Skeleton"; + return " \uD83D\uDC80 Skeleton"; } } \ No newline at end of file diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java b/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java index 934c803..edf7b4b 100644 --- a/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java @@ -16,7 +16,7 @@ public class Vampire extends Enemy{ @Override public void specialAbility(Entity target) { - System.out.printf("\t%s used life steal ability!\n", getName()); + System.out.printf("\t%s used life steal ability! \uD83E\uDDEB\n", getName()); target.takeDamage((int)((0.8)*(weapon.getDamage()))); hp += (int)((0.2)*(weapon.getDamage())); } @@ -27,7 +27,7 @@ public class Vampire extends Enemy{ @Override public String getName(){ - return "Vampire"; + return " \uD83E\uDDDB Vampire"; } } \ No newline at end of file diff --git a/Java-Knight/src/main/java/org/project/entity/players/Assassin.java b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java index 695788b..617794e 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Assassin.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java @@ -26,7 +26,7 @@ public class Assassin extends Player { @Override public void specialAbility(Entity target) { - System.out.printf("\t%s used Special Ability! Enemy gets hit critically (%d Mana)\n", name, 30); + System.out.printf("\t%s used Special Ability \uD83D\uDCA5! Enemy gets hit critically (%d Mana)\n", name, 30); target.takeDamage(52); // critical attack this.mp -= specialAbilityMP; defending = true; // dodging (becomes invisible), technically does what Defend does. diff --git a/Java-Knight/src/main/java/org/project/entity/players/Knight.java b/Java-Knight/src/main/java/org/project/entity/players/Knight.java index 1bf266f..da93a9f 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Knight.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Knight.java @@ -26,7 +26,7 @@ public class Knight extends Player { @Override public void specialAbility(Entity target) { - System.out.printf("\t%s used Special Ability! Enemy misses its next turn. (%d Mana)\n", name, 25); + System.out.printf("\t%s used Special Ability! Enemy misses its next turn. \uD83E\uDDF1 (%d Mana)\n", name, 25); target.takeDamage(30); this.mp -= specialAbilityMP; target.stun(true); diff --git a/Java-Knight/src/main/java/org/project/entity/players/Player.java b/Java-Knight/src/main/java/org/project/entity/players/Player.java index b0111d7..2340f37 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Player.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Player.java @@ -19,6 +19,9 @@ public abstract class Player implements Entity { protected final int defendMP = 20; protected int specialAbilityMP; + public static final String RESET = "\u001B[0m"; + public static final String RED_TEXT = "\u001B[31m"; + public Player(String name, int hp, int mp, Weapon weapon) { this.name = name; @@ -31,17 +34,17 @@ public abstract class Player implements Entity { public void lightAttack(Entity target){ if(target.isDefending()){ // check if enemy is defending or not - System.out.printf("\t%s is Defending. You missed your attack.\n", target.getName()); + System.out.printf("\t%s is Defending. You missed your attack. \uD83D\uDEE1\uFE0F \n", target.getName()); return; } } public void heavyAttack(Entity target){ // Uses weapons if(target.isDefending()){ // check if enemy is defending or not - System.out.printf("\t%s is Defending. You missed your attack.\n", target.getName()); + System.out.printf("\t%s is Defending. You missed your attack. \uD83D\uDEE1\uFE0F\n", target.getName()); return; } - System.out.printf("\t%s used Heavy Attack! (%d Mana)\n", name, weapon.getManaCost()); + System.out.printf("\t%s used Heavy Attack \uD83D\uDCA5! (%d Mana)\n", name, weapon.getManaCost()); target.takeDamage(weapon.getDamage()); mp -= weapon.getManaCost(); } @@ -49,7 +52,7 @@ public abstract class Player implements Entity { @Override public void defend(boolean value) { if(value){ - System.out.printf("\t%s used Defend, Enemy cannot attack in his next turn! (%d Mana)\n", name, 20); + System.out.printf("\t%s used Defend, Enemy cannot attack in his next turn \uD83D\uDEE1\uFE0F! (%d Mana)\n", name, 20); mp -= 20; defending = true; return; @@ -60,12 +63,12 @@ public abstract class Player implements Entity { @Override public void takeDamage(int damage) { hp -= damage; - System.out.printf("\t%s took %d damage\n", name, damage); + System.out.printf("\t%s took %d damage \uD83D\uDCA5\n", name, damage); } @Override public void heal(int health) { - System.out.printf("\t%s used Heal! (%d Mana)\n", name, 20); + System.out.printf("\t%s used Heal ❤\uFE0F! (%d Mana)\n", name, 20); hp += health; if (hp > maxHP) { hp = maxHP; @@ -87,11 +90,11 @@ public abstract class Player implements Entity { public void addKey(Enemy target){ keys++; target.dropKey(); - System.out.printf("\t%s gained %s's key! gained keys: %d\n\n", getName(), target.getName(), keys); + System.out.printf("\t%s gained %s's key \uD83D\uDDDD\uFE0F! gained keys: %d\n\n", getName(), target.getName(), keys); } public void addXP(int xp){ - System.out.printf("\t%d XP added.\n", xp); + System.out.printf("\n\t%d XP added.\n", xp); maxMP += xp; maxHP += xp; } @@ -142,7 +145,7 @@ public abstract class Player implements Entity { @Override public boolean isAlive() { if(hp <= 0){ - System.out.println("\t=============== Game Over ==============="); + System.out.println(RED_TEXT + "\t=============== Game Over ===============" + RESET); alive = false; } return alive; diff --git a/Java-Knight/src/main/java/org/project/entity/players/Wizard.java b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java index 7a7fe7b..426b1d6 100644 --- a/Java-Knight/src/main/java/org/project/entity/players/Wizard.java +++ b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java @@ -26,7 +26,7 @@ public class Wizard extends Player { @Override public void specialAbility(Entity target) { - System.out.printf("\t%s used Special Ability! Casting spell. (%d Mana)\n", name, 28); + System.out.printf("\t%s used Special Ability! Casting spell. \uD83E\uDE84 (%d Mana)\n", name, 28); target.takeDamage(32); // casts spell this.mp -= specialAbilityMP; heal(15); diff --git a/Java-Knight/target/classes/org/project/Main.class b/Java-Knight/target/classes/org/project/Main.class index 41decdf..5dd51e7 100644 Binary files a/Java-Knight/target/classes/org/project/Main.class and b/Java-Knight/target/classes/org/project/Main.class differ diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Dragon.class b/Java-Knight/target/classes/org/project/entity/enemies/Dragon.class index 77ee8be..55c5464 100644 Binary files a/Java-Knight/target/classes/org/project/entity/enemies/Dragon.class and b/Java-Knight/target/classes/org/project/entity/enemies/Dragon.class differ diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class b/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class index c221ab4..2d66c70 100644 Binary files a/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class and b/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class differ diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class b/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class index 8d05f2c..42c5c6a 100644 Binary files a/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class and b/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class differ diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class b/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class index 4d9ddd9..3f2bbad 100644 Binary files a/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class and b/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class differ diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class b/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class index cf916c3..4b4dc9e 100644 Binary files a/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class and b/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class differ diff --git a/Java-Knight/target/classes/org/project/entity/players/Assassin.class b/Java-Knight/target/classes/org/project/entity/players/Assassin.class index e8c6e9f..a18831f 100644 Binary files a/Java-Knight/target/classes/org/project/entity/players/Assassin.class and b/Java-Knight/target/classes/org/project/entity/players/Assassin.class differ diff --git a/Java-Knight/target/classes/org/project/entity/players/Knight.class b/Java-Knight/target/classes/org/project/entity/players/Knight.class index b38e5eb..c7eef50 100644 Binary files a/Java-Knight/target/classes/org/project/entity/players/Knight.class and b/Java-Knight/target/classes/org/project/entity/players/Knight.class differ diff --git a/Java-Knight/target/classes/org/project/entity/players/Player.class b/Java-Knight/target/classes/org/project/entity/players/Player.class index 8ca9d88..f3848fb 100644 Binary files a/Java-Knight/target/classes/org/project/entity/players/Player.class and b/Java-Knight/target/classes/org/project/entity/players/Player.class differ diff --git a/Java-Knight/target/classes/org/project/entity/players/Wizard.class b/Java-Knight/target/classes/org/project/entity/players/Wizard.class index 709b24c..8448206 100644 Binary files a/Java-Knight/target/classes/org/project/entity/players/Wizard.class and b/Java-Knight/target/classes/org/project/entity/players/Wizard.class differ diff --git a/Java-Knight/target/classes/org/project/item/armors/Armor.class b/Java-Knight/target/classes/org/project/item/armors/Armor.class deleted file mode 100644 index b9768d9..0000000 Binary files a/Java-Knight/target/classes/org/project/item/armors/Armor.class and /dev/null differ diff --git a/Java-Knight/target/classes/org/project/item/armors/KnightArmor.class b/Java-Knight/target/classes/org/project/item/armors/KnightArmor.class deleted file mode 100644 index 6c1893a..0000000 Binary files a/Java-Knight/target/classes/org/project/item/armors/KnightArmor.class and /dev/null differ diff --git a/Java-Knight/target/classes/org/project/item/consumables/Consumable.class b/Java-Knight/target/classes/org/project/item/consumables/Consumable.class deleted file mode 100644 index 4da62af..0000000 Binary files a/Java-Knight/target/classes/org/project/item/consumables/Consumable.class and /dev/null differ