From a9937d2668d42b8359d7cc029b7c25eb842dfc3d Mon Sep 17 00:00:00 2001 From: Zahra Gharagozloo Mazlaghan Date: Mon, 11 May 2026 00:06:37 +0330 Subject: [PATCH] Added Narrative Console by adding ANSI escape codes. --- .../main/java/org/project/entity/Entity.java | 2 - .../org/project/entity/enemies/Dragon.java | 19 ++++--- .../org/project/entity/enemies/Enemy.java | 3 +- .../org/project/entity/enemies/Goblin.java | 9 ++-- .../org/project/entity/enemies/Skeleton.java | 13 ++--- .../org/project/entity/enemies/Vampire.java | 11 +++-- .../org/project/entity/players/Assassin.java | 29 +++++------ .../org/project/entity/players/Knight.java | 19 +++---- .../org/project/entity/players/Player.java | 20 ++++---- .../org/project/entity/players/Wizard.java | 24 ++++----- .../org/project/item/consumables/Flask.java | 20 ++++---- .../project/item/consumables/GreatFlask.java | 2 +- .../project/item/consumables/HealthFlask.java | 2 +- .../project/item/consumables/ManaFlask.java | 5 +- .../java/org/project/item/weapons/Weapon.java | 4 -- .../java/org/project/location/AnsiColors.java | 30 ++++++++++++ .../project/location/NarrativeConsole.java | 49 +++++++++++++++++++ 17 files changed, 173 insertions(+), 88 deletions(-) create mode 100644 Java-Knight/src/main/java/org/project/location/AnsiColors.java create mode 100644 Java-Knight/src/main/java/org/project/location/NarrativeConsole.java diff --git a/Java-Knight/src/main/java/org/project/entity/Entity.java b/Java-Knight/src/main/java/org/project/entity/Entity.java index 62cead0..5aa2721 100644 --- a/Java-Knight/src/main/java/org/project/entity/Entity.java +++ b/Java-Knight/src/main/java/org/project/entity/Entity.java @@ -17,6 +17,4 @@ public interface Entity { int getHp(); int getMp(); - - String getName(); } 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 5cb83d8..33cae22 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 @@ -4,6 +4,7 @@ import org.project.entity.Entity; import org.project.entity.players.Player; import org.project.item.weapons.BoneDagger; import org.project.item.weapons.DragonClaw; +import org.project.location.NarrativeConsole; import java.util.Random; @@ -34,33 +35,33 @@ public class Dragon extends Enemy { if (target instanceof Player) { Player player = (Player) target; if (player.isDefending()) { - System.out.println("๐Ÿ‰ Dragon ignores your pathetic shield!"); + NarrativeConsole.printCombat("๐Ÿ‰ Dragon ignores your pathetic shield!"); //Complete damage is done } } target.takeDamage(damage); - System.out.println("๐Ÿ‰ Dragon strikes with its claw!"); - System.out.println("๐Ÿ’ฅ " + damage + " damage dealt to " + getName(target) + "!"); + NarrativeConsole.printCombat("๐Ÿ‰ Dragon strikes with its claw!"); + NarrativeConsole.printDamage("๐Ÿ’ฅ " + damage + " damage dealt to " + getName(target) + "!"); } private void fireBreath(Entity target) { int damage = 45; - System.out.println("๐Ÿ‰๐Ÿ‰๐Ÿ‰ DRAGON BREATHES FIRE! ๐Ÿ‰๐Ÿ‰๐Ÿ‰"); - System.out.println("๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ FIERY BREATH ENGULFS EVERYTHING! ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ"); + NarrativeConsole.printSpecial("๐Ÿ‰๐Ÿ‰๐Ÿ‰ DRAGON BREATHES FIRE! ๐Ÿ‰๐Ÿ‰๐Ÿ‰"); + NarrativeConsole.printSpecial("๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ FIERY BREATH ENGULFS EVERYTHING! ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ"); if (target instanceof Player) { Player player = (Player) target; if (player.isDefending()) { - System.out.println("๐Ÿ›ก๏ธ Your shield MELTS under the dragon's breath!"); - System.out.println("๐Ÿ”ฅ Defense is USELESS against this attack!"); + NarrativeConsole.printSpecial("๐Ÿ›ก๏ธ Your shield MELTS under the dragon's breath!"); + NarrativeConsole.printSpecial("๐Ÿ”ฅ Defense is USELESS against this attack!"); player.setDefending(false); //The defense is invalid } } target.takeDamage(damage); - System.out.println("๐Ÿ’ฅ " + getName(target) + " takes " + damage + " MASSIVE damage!"); + NarrativeConsole.printDamage("๐Ÿ’ฅ " + getName(target) + " takes " + damage + " MASSIVE damage!"); } @Override @@ -72,4 +73,6 @@ public class Dragon extends Enemy { public int getMaxMP() { return 100; } + + } 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 feaf10e..31970ea 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 @@ -3,6 +3,7 @@ package org.project.entity.enemies; import org.project.entity.Entity; import org.project.item.weapons.Sword; import org.project.item.weapons.Weapon; +import org.project.location.NarrativeConsole; public abstract class Enemy implements Entity { Weapon weapon; @@ -80,7 +81,7 @@ public abstract class Enemy implements Entity { public void heal(int health) { //checking mana if (mp < healCost) { - System.out.println("Not enough mana to heal!"); + NarrativeConsole.printWarning("โŒ Not enough mana to heal!"); return; } 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 053e3f0..4469abd 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 @@ -3,6 +3,7 @@ package org.project.entity.enemies; import org.project.entity.Entity; import org.project.item.weapons.BoneDagger; import org.project.item.weapons.ToothedHook; +import org.project.location.NarrativeConsole; import java.util.Random; @@ -28,11 +29,11 @@ public class Goblin extends Enemy { target.takeDamage(damage); if (isCritical) { - System.out.println("๐Ÿ’ฃ Goblin used CRITICAL STRIKE! "); - System.out.println("๐Ÿ’ฅ Goblin dealt " + damage + " damage to " + getName(target) + "!"); + NarrativeConsole.printSpecial("๐Ÿ’ฃ Goblin used CRITICAL STRIKE! "); + NarrativeConsole.printDamage("๐Ÿ’ฅ Goblin dealt " + damage + " damage to " + getName(target) + "!"); } else { - System.out.println("๐Ÿ‘น Goblin attacked " + getName(target) + "!"); - System.out.println("๐Ÿ’ฅ Goblin dealt " + damage + " damage to " + getName(target) + "!"); + NarrativeConsole.printCombat("๐Ÿ‘น Goblin attacked " + getName(target) + "!"); + NarrativeConsole.printDamage("๐Ÿ’ฅ Goblin dealt " + damage + " damage to " + getName(target) + "!"); } } 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 943aac2..33ba4dd 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 @@ -2,6 +2,7 @@ package org.project.entity.enemies; import org.project.entity.Entity; import org.project.item.weapons.BoneDagger; +import org.project.location.NarrativeConsole; public class Skeleton extends Enemy { private boolean hasResurrected = false; @@ -16,8 +17,8 @@ public class Skeleton extends Enemy { target.takeDamage(damage); - System.out.println("๐Ÿ’€ Skeleton attacked " + getName(target) + "!"); - System.out.println("๐Ÿ’ฅ Skeleton dealt " + damage + " damage to " + NarrativeConsole.printWarning("๐Ÿ’€ Skeleton attacked " + getName(target) + "!"); + NarrativeConsole.printDamage("๐Ÿ’ฅ Skeleton dealt " + damage + " damage to " + getName(target) + "!"); } @@ -31,8 +32,8 @@ public class Skeleton extends Enemy { setHp(resurrectedHp); hasResurrected = true; - System.out.println("๐Ÿ’€ Skeleton has been defeated..."); - System.out.println("โ˜ ๏ธ But Skeleton rises again! Resurrected with " + NarrativeConsole.printSuccess("๐Ÿ’€ Skeleton has been defeated..."); + NarrativeConsole.printSpecial("โ˜ ๏ธ But Skeleton rises again! Resurrected with " + resurrectedHp + " HP!"); return; } @@ -40,11 +41,11 @@ public class Skeleton extends Enemy { setHp(newHp); if (getHp() < 0) setHp(0); - System.out.println("๐Ÿ’ฅ Skeleton took " + damage + " damage! HP: " + NarrativeConsole.printDamage("๐Ÿ’ฅ Skeleton took " + damage + " damage! HP: " + getHp() + "/" + getMaxHP()); if (getHp() <= 0) { - System.out.println("โ˜ ๏ธ Skeleton has been destroyed for good!"); + NarrativeConsole.printSuccess("โ˜ ๏ธ Skeleton has been destroyed for good!"); } } 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 df2054a..28534ba 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 @@ -2,6 +2,7 @@ package org.project.entity.enemies; import org.project.entity.Entity; import org.project.item.weapons.ToothedHook; +import org.project.location.NarrativeConsole; public class Vampire extends Enemy { public Vampire() { @@ -22,13 +23,13 @@ public class Vampire extends Enemy { } setHp(newHp); - System.out.println("๐Ÿฆ‡ Vampire attacks " + getName(target) + "!"); - System.out.println("๐Ÿ’ฅ Dealt " + damage + " damage!"); - System.out.println("๐Ÿฉธ Life steal: Vampire drains " + healAmount + " HP and regenerates!"); - System.out.println("๐Ÿ’š Vampire HP: " + getHp() + "/" + getMaxHP()); + NarrativeConsole.printCombat("๐Ÿฆ‡ Vampire attacks " + getName(target) + "!"); + NarrativeConsole.printDamage("๐Ÿ’ฅ Dealt " + damage + " damage!"); + NarrativeConsole.printSpecial("๐Ÿฉธ Life steal: Vampire drains " + healAmount + " HP and regenerates!"); + NarrativeConsole.printSpecial("๐Ÿ’š Vampire HP: " + getHp() + "/" + getMaxHP()); if (getHp() == getMaxHP()) { - System.out.println("๐Ÿฆ‡ Vampire is fully satiated!"); + NarrativeConsole.printInfo("๐Ÿฆ‡ Vampire is fully satiated!"); } } 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 472bce5..7281576 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 @@ -3,6 +3,7 @@ package org.project.entity.players; import org.project.entity.Entity; import org.project.item.armors.Armor; import org.project.item.weapons.Weapon; +import org.project.location.NarrativeConsole; public class Assassin extends Player implements Entity, ICombatActions { public Assassin(String name, Weapon weapon, Armor armor) { @@ -13,7 +14,7 @@ public class Assassin extends Player implements Entity, ICombatActions { public void specialAbility(Entity target) { //Checking if the mana is enough of not if (getMp() < 15) { - System.out.println("โŒ Not enough mana for Devastating Spell!"); + NarrativeConsole.printWarning("โŒ Not enough mana for Devastating Spell!"); return; } @@ -23,10 +24,10 @@ public class Assassin extends Player implements Entity, ICombatActions { setInvisible(true); setNextAttackCritical(true); - System.out.println("๐Ÿ’œ " + getName() + " turns INVISIBLE!"); - System.out.println("โšก Next attack will be CRITICAL (2x damage)!"); - System.out.println("๐Ÿ›ก๏ธ Will dodge the next incoming attack completely!"); - System.out.println("๐Ÿ’™ Mana left: " + getMp()); + NarrativeConsole.printSpecial("๐Ÿ’œ " + getName() + " turns INVISIBLE!"); + NarrativeConsole.printSpecial("โšก Next attack will be CRITICAL (2x damage)!"); + NarrativeConsole.printSpecial("๐Ÿ›ก๏ธ Will dodge the next incoming attack completely!"); + NarrativeConsole.printMana("๐Ÿ’™ Mana left: " + getMp()); } public void lightAttack(Entity target) { @@ -35,18 +36,18 @@ public class Assassin extends Player implements Entity, ICombatActions { //Critical Action (if enabled) if (isNextAttackCritical()) { damage *= 2; - System.out.println("โšก CRITICAL HIT! Damage doubled to " + damage + "!"); + NarrativeConsole.printSpecial("โšก CRITICAL HIT! Damage doubled to " + damage + "!"); setNextAttackCritical(false); } target.takeDamage(damage); - System.out.println("โš”๏ธ " + getName() + " used Light Attack! Dealt " + damage + " damage."); + NarrativeConsole.printDamage("โš”๏ธ " + getName() + " used Light Attack! Dealt " + damage + " damage."); } @Override public void heavyAttack(Entity target) { if (getMp() < 8) { - System.out.println("โŒ Not enough mana for Heavy Attack!"); + NarrativeConsole.printWarning("โŒ Not enough mana for Heavy Attack!"); return; } setMp(getMp() - 8); @@ -55,35 +56,35 @@ public class Assassin extends Player implements Entity, ICombatActions { //Critical Action (if enabled) if (isNextAttackCritical()) { damage *= 2; - System.out.println("โšก CRITICAL HIT! Damage doubled to " + damage + "!"); + NarrativeConsole.printSpecial("โšก CRITICAL HIT! Damage doubled to " + damage + "!"); setNextAttackCritical(false); } target.takeDamage(damage); - System.out.println("๐Ÿ’ฅ " + getName() + " used Heavy Attack! Dealt " + damage + " damage."); + NarrativeConsole.printDamage("๐Ÿ’ฅ " + getName() + " used Heavy Attack! Dealt " + damage + " damage."); } @Override public void defend() { if (getMp() < 6) { - System.out.println("โŒ Not enough mana to defend!"); + NarrativeConsole.printWarning("โŒ Not enough mana to defend!"); return; } setMp(getMp() - 6); setDefending(true); - System.out.println("๐Ÿ›ก๏ธ " + getName() + " is defending! Next attack will be halved."); + NarrativeConsole.printCombat("๐Ÿ›ก๏ธ " + getName() + " is defending! Next attack will be halved."); } @Override public void heal() { if (getMp() < 12) { - System.out.println("โŒ Not enough mana to heal!"); + NarrativeConsole.printWarning("โŒ Not enough mana to heal!"); return; } setMp(getMp() - 12); int healAmount = 20; setHp(getHp() + healAmount); if (getHp() > getMaxHP()) setHp(getMaxHP()); - System.out.println("๐Ÿ’š " + getName() + " healed " + healAmount + " HP!"); + NarrativeConsole.printHeal("๐Ÿ’š " + getName() + " healed " + healAmount + " HP!"); } } \ No newline at end of file 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 98f470f..a9c90d5 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 @@ -6,6 +6,7 @@ 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.NarrativeConsole; import java.util.ArrayList; @@ -19,7 +20,7 @@ public class Knight extends Player implements ICombatActions { public void specialAbility(Entity target) { //Checking if the mana is enough of not if (getMp() < 15) { - System.out.println("โŒ Mana is not enough for Shield Bash!"); + NarrativeConsole.printWarning("โŒ Mana is not enough for Shield Bash!"); return; } @@ -31,48 +32,48 @@ public class Knight extends Player implements ICombatActions { ((Sword) getWeapon()).uniqueAbility(target); } - System.out.println("๐Ÿ’ฅ Shield Bash! Enemy is stunned!"); + NarrativeConsole.printSpecial("๐Ÿ’ฅ Shield Bash! Enemy is stunned!"); } public void lightAttack(Entity target) { int damage = 10; target.takeDamage(damage); - System.out.println("โš”๏ธ " + getName() + " used Light Attack! Dealt " + damage + " damage."); + NarrativeConsole.printCombat("โš”๏ธ " + getName() + " used Light Attack! Dealt " + damage + " damage."); } @Override public void heavyAttack(Entity target) { if (getMp() < 8) { - System.out.println("โŒ Not enough mana for Heavy Attack!"); + NarrativeConsole.printWarning("โŒ Mana is not enough for Heavy Attack!"); return; } setMp(getMp() - 8); int damage = 20; target.takeDamage(damage); - System.out.println("๐Ÿ’ฅ " + getName() + " used Heavy Attack! Dealt " + damage + " damage."); + NarrativeConsole.printDamage("๐Ÿ’ฅ " + getName() + " used Heavy Attack! Dealt " + damage + " damage."); } @Override public void defend() { if (getMp() < 6) { - System.out.println("โŒ Not enough mana to defend!"); + NarrativeConsole.printWarning("โŒ Not enough mana to defend!"); return; } setMp(getMp() - 6); setDefending(true); - System.out.println("๐Ÿ›ก๏ธ " + getName() + " is defending! Next attack will be halved."); + NarrativeConsole.printCombat("๐Ÿ›ก๏ธ " + getName() + " is defending! Next attack will be halved."); } @Override public void heal() { if (getMp() < 12) { - System.out.println("โŒ Not enough mana to heal!"); + NarrativeConsole.printWarning("โŒ Not enough mana to heal!"); return; } setMp(getMp() - 12); int healAmount = 20; setHp(getHp() + healAmount); if (getHp() > getMaxHP()) setHp(getMaxHP()); - System.out.println("๐Ÿ’š " + getName() + " healed " + healAmount + " HP!"); + NarrativeConsole.printHeal("๐Ÿ’š " + getName() + " healed " + healAmount + " HP!"); } } 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 05340fe..f78de84 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 @@ -3,6 +3,7 @@ package org.project.entity.players; import org.project.entity.Entity; import org.project.item.armors.Armor; import org.project.item.weapons.Weapon; +import org.project.location.NarrativeConsole; import java.util.ArrayList; @@ -34,7 +35,7 @@ public abstract class Player implements Entity { public void defend() { //checking mana if (mp < defendCost) { - System.out.println("Not enough mana to defend!"); + NarrativeConsole.printWarning("โŒ Not enough mana to defend!"); return; } @@ -44,7 +45,7 @@ public abstract class Player implements Entity { //activating defense mode isDefending = true; - System.out.println("๐Ÿ›ก๏ธ " + name + " raises shield, preparing to block next attack!"); + NarrativeConsole.printCombat("๐Ÿ›ก๏ธ " + name + " raises shield, preparing to block next attack!"); } @Override @@ -54,7 +55,7 @@ public abstract class Player implements Entity { //reducing damage if the player is in defend mode if (isDefending()) { actualDamage = damage / 2; - System.out.println("๐Ÿ›ก๏ธ Defense reduced damage from " + damage + " to " + actualDamage); + NarrativeConsole.printCombat("๐Ÿ›ก๏ธ Defense reduced damage from " + damage + " to " + actualDamage); setDefending(false); } @@ -64,16 +65,17 @@ public abstract class Player implements Entity { if (actualDamage < 0) actualDamage = 0; armor.reduceDurability(1); - System.out.println("๐Ÿ›ก๏ธ Armor blocked " + defense + + NarrativeConsole.printCombat("๐Ÿ›ก๏ธ Armor blocked " + defense + " damage! Remaining durability: " + armor.getDurability()); } setHp(getHp() - actualDamage); - System.out.println("๐Ÿ’ฅ " + getName() + " took " + actualDamage + " damage! HP: " + getHp()); + NarrativeConsole.printDamage("๐Ÿ’ฅ " + getName() + " took " + + actualDamage + " damage! HP: " + getHp()); if (getHp() < 0) { setHp(0); - System.out.println("๐Ÿ’€ " + getName() + " has been defeated!"); + NarrativeConsole.printDamage("๐Ÿ’€ " + getName() + " has been defeated!"); } } @@ -81,7 +83,7 @@ public abstract class Player implements Entity { public void heal(int health) { //checking mana if (mp < healCost) { - System.out.println("Not enough mana to heal!"); + NarrativeConsole.printWarning("โŒ Not enough mana to heal!"); return; } @@ -106,9 +108,9 @@ public abstract class Player implements Entity { } if (mp == maxMP) { - System.out.println("Mana is now full! (" + mp + "/" + maxMP + ")"); + NarrativeConsole.printMana("๐Ÿฉต Mana is now full! (" + mp + "/" + maxMP + ")"); } else { - System.out.println("Mana increased from " + oldMana + " to " + mp); + NarrativeConsole.printMana("๐Ÿฉต Mana increased from " + oldMana + " to " + mp); } } 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 ed55516..af60377 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 @@ -6,6 +6,7 @@ import org.project.item.armors.Armor; import org.project.item.weapons.Sword; import org.project.item.weapons.Wand; import org.project.item.weapons.Weapon; +import org.project.location.NarrativeConsole; public class Wizard extends Player implements Entity,ICombatActions { public Wizard (String name, Weapon weapon, Armor armor) { @@ -16,7 +17,7 @@ public class Wizard extends Player implements Entity,ICombatActions { public void specialAbility(Entity target) { //Checking if the mana is enough of not if (getMp() < 15) { - System.out.println("โŒ Not enough mana for Devastating Spell!"); + NarrativeConsole.printWarning("โŒ Not enough mana for Devastating Spell!"); return; } @@ -24,58 +25,57 @@ public class Wizard extends Player implements Entity,ICombatActions { setMp(getMp()-15); target.takeDamage(30); - System.out.println("๐Ÿ”ฎ " + getName() + "used DEVASTATING SPELL Dealt" + 30 + " damage!"); + NarrativeConsole.printSpecial("๐Ÿ”ฎ " + getName() + "used DEVASTATING SPELL Dealt" + 30 + " damage!"); int newHp = getHp() + 10; if (newHp > getMaxHP()) newHp = getMaxHP(); setHp(newHp); - System.out.println("๐Ÿ’š " + getName() + " healed " + 10 + " HP! (Now: " + + NarrativeConsole.printSpecial("๐Ÿ’š " + getName() + " healed " + 10 + " HP! (Now: " + getHp() + "/" + getMaxHP() + ")"); - System.out.println("๐Ÿ”ฎ " + getName() + " casts DEVASTATING SPELL!"); - System.out.println("๐Ÿ’™ Mana left: " + getMp()); + NarrativeConsole.printMana("๐Ÿ’™ Mana left: " + getMp()); } public void lightAttack(Entity target) { int damage = 10; target.takeDamage(damage); - System.out.println("โš”๏ธ " + getName() + " used Light Attack! Dealt " + damage + " damage."); + NarrativeConsole.printCombat("โš”๏ธ " + getName() + " used Light Attack! Dealt " + damage + " damage."); } @Override public void heavyAttack(Entity target) { if (getMp() < 8) { - System.out.println("โŒ Not enough mana for Heavy Attack!"); + NarrativeConsole.printWarning("โŒ Not enough mana for Heavy Attack!"); return; } setMp(getMp() - 8); int damage = 20; target.takeDamage(damage); - System.out.println("๐Ÿ’ฅ " + getName() + " used Heavy Attack! Dealt " + damage + " damage."); + NarrativeConsole.printDamage("๐Ÿ’ฅ " + getName() + " used Heavy Attack! Dealt " + damage + " damage."); } @Override public void defend() { if (getMp() < 6) { - System.out.println("โŒ Not enough mana to defend!"); + NarrativeConsole.printWarning("โŒ Not enough mana to defend!"); return; } setMp(getMp() - 6); setDefending(true); - System.out.println("๐Ÿ›ก๏ธ " + getName() + " is defending! Next attack will be halved."); + NarrativeConsole.printCombat("๐Ÿ›ก๏ธ " + getName() + " is defending! Next attack will be halved."); } @Override public void heal() { if (getMp() < 12) { - System.out.println("โŒ Not enough mana to heal!"); + NarrativeConsole.printWarning("โŒ Not enough mana to heal!"); return; } setMp(getMp() - 12); int healAmount = 20; setHp(getHp() + healAmount); if (getHp() > getMaxHP()) setHp(getMaxHP()); - System.out.println("๐Ÿ’š " + getName() + " healed " + healAmount + " HP!"); + NarrativeConsole.printHeal("๐Ÿ’š " + getName() + " healed " + healAmount + " HP!"); } } diff --git a/Java-Knight/src/main/java/org/project/item/consumables/Flask.java b/Java-Knight/src/main/java/org/project/item/consumables/Flask.java index 3bb95de..2d168fc 100644 --- a/Java-Knight/src/main/java/org/project/item/consumables/Flask.java +++ b/Java-Knight/src/main/java/org/project/item/consumables/Flask.java @@ -1,18 +1,18 @@ package org.project.item.consumables; import org.project.entity.Entity; +import org.project.location.NarrativeConsole; public class Flask extends Consumable { - public Flask(int healingPersent) { - super("Healing Flask"); - this.healingPercent = 25; + public Flask(String name, int healingPercent) { + super(name , healingPercent); } @Override public void use(Entity target) { //Checking if the target is alive if (target == null || target.getHp() <= 0) { - System.out.println("โŒ Target is dead already!"); + NarrativeConsole.printWarning("โŒ Target is dead already!"); return; } @@ -25,14 +25,14 @@ public class Flask extends Consumable { target.heal(healAmount); int actualHeal = target.getHp() - oldHp; - System.out.println("๐Ÿงช๐Ÿงช๐Ÿงช ============== ๐Ÿงช๐Ÿงช๐Ÿงช"); - System.out.println("๐Ÿ’š " + target.getName() + " drinks the Healing Flask!"); - System.out.println("โœจ Restored " + actualHeal + " HP!"); - System.out.println("๐Ÿ’š HP: " + target.getHp() + "/" + target.getMaxHP()); + NarrativeConsole.printHeal("๐Ÿงช๐Ÿงช๐Ÿงช ============== ๐Ÿงช๐Ÿงช๐Ÿงช"); + NarrativeConsole.printHeal("๐Ÿ’š " + getName() + " drinks the Healing Flask!"); + NarrativeConsole.printHeal("โœจ Restored " + actualHeal + " HP!"); + NarrativeConsole.printHeal("๐Ÿ’š HP: " + target.getHp() + "/" + target.getMaxHP()); if (target.getHp() == target.getMaxHP()) { - System.out.println("๐Ÿ’ช " + target.getName() + " is fully healed!"); + NarrativeConsole.printHeal("๐Ÿ’ช " + getName() + " is fully healed!"); } - System.out.println("๐Ÿงช๐Ÿงช๐Ÿงช ============== ๐Ÿงช๐Ÿงช๐Ÿงช"); + NarrativeConsole.printHeal("๐Ÿงช๐Ÿงช๐Ÿงช ============== ๐Ÿงช๐Ÿงช๐Ÿงช"); } } diff --git a/Java-Knight/src/main/java/org/project/item/consumables/GreatFlask.java b/Java-Knight/src/main/java/org/project/item/consumables/GreatFlask.java index a0feacf..8ac8051 100644 --- a/Java-Knight/src/main/java/org/project/item/consumables/GreatFlask.java +++ b/Java-Knight/src/main/java/org/project/item/consumables/GreatFlask.java @@ -2,6 +2,6 @@ package org.project.item.consumables; public class GreatFlask extends Flask { public GreatFlask() { - super(50); //50% healing + super("Great Flask", 50); //50% healing } } diff --git a/Java-Knight/src/main/java/org/project/item/consumables/HealthFlask.java b/Java-Knight/src/main/java/org/project/item/consumables/HealthFlask.java index 5f4d3c0..0271120 100644 --- a/Java-Knight/src/main/java/org/project/item/consumables/HealthFlask.java +++ b/Java-Knight/src/main/java/org/project/item/consumables/HealthFlask.java @@ -2,6 +2,6 @@ package org.project.item.consumables; public class HealthFlask extends Flask { public HealthFlask() { - super(25); //25% healing + super("Health Flask",25); //25% healing } } diff --git a/Java-Knight/src/main/java/org/project/item/consumables/ManaFlask.java b/Java-Knight/src/main/java/org/project/item/consumables/ManaFlask.java index 80c712c..3aa4aa6 100644 --- a/Java-Knight/src/main/java/org/project/item/consumables/ManaFlask.java +++ b/Java-Knight/src/main/java/org/project/item/consumables/ManaFlask.java @@ -2,10 +2,11 @@ package org.project.item.consumables; import org.project.entity.Entity; import org.project.entity.players.Player; +import org.project.location.NarrativeConsole; public class ManaFlask extends Flask { public ManaFlask() { - super(30); //30% mana increasing + super("Mana Flask",30); //30% mana increasing } @Override @@ -14,7 +15,7 @@ public class ManaFlask extends Flask { Player player = (Player) target; int manaAmount = player.getMaxMP() / 3; player.setMp(Math.min(player.getMp() + manaAmount, player.getMaxMP())); - System.out.println("๐Ÿ’™ Restored " + manaAmount + " Mana!"); + NarrativeConsole.printMana("๐Ÿ’™ Restored " + manaAmount + " Mana!"); } } } diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Weapon.java b/Java-Knight/src/main/java/org/project/item/weapons/Weapon.java index 9055ec3..16b5a95 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/Weapon.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/Weapon.java @@ -7,10 +7,6 @@ public abstract class Weapon implements Item { private int damage; private int manaCost; - /* - TODO: ADD OTHER REQUIRED AND BONUS ATTRIBUTES - */ - public Weapon(int damage, int manaCost) { this.damage = damage; this.manaCost = manaCost; diff --git a/Java-Knight/src/main/java/org/project/location/AnsiColors.java b/Java-Knight/src/main/java/org/project/location/AnsiColors.java new file mode 100644 index 0000000..4064d6b --- /dev/null +++ b/Java-Knight/src/main/java/org/project/location/AnsiColors.java @@ -0,0 +1,30 @@ +package org.project.location; + +public class AnsiColors { + // Reset + public static final String RESET = "\u001B[0m"; + + // Regular Colors + public static final String BLACK = "\u001B[30m"; + public static final String RED = "\u001B[31m"; + public static final String GREEN = "\u001B[32m"; + public static final String YELLOW = "\u001B[33m"; + public static final String BLUE = "\u001B[34m"; + public static final String PURPLE = "\u001B[35m"; + public static final String CYAN = "\u001B[36m"; + public static final String WHITE = "\u001B[37m"; + + // Bold Colors + public static final String BOLD_RED = "\u001B[1;31m"; + public static final String BOLD_GREEN = "\u001B[1;32m"; + public static final String BOLD_YELLOW = "\u001B[1;33m"; + public static final String BOLD_BLUE = "\u001B[1;34m"; + public static final String BOLD_PURPLE = "\u001B[1;35m"; + public static final String BOLD_CYAN = "\u001B[1;36m"; + + // Background Colors + public static final String BG_RED = "\u001B[41m"; + public static final String BG_GREEN = "\u001B[42m"; + public static final String BG_YELLOW = "\u001B[43m"; + public static final String BG_BLUE = "\u001B[44m"; +} diff --git a/Java-Knight/src/main/java/org/project/location/NarrativeConsole.java b/Java-Knight/src/main/java/org/project/location/NarrativeConsole.java new file mode 100644 index 0000000..cf9e1d0 --- /dev/null +++ b/Java-Knight/src/main/java/org/project/location/NarrativeConsole.java @@ -0,0 +1,49 @@ +package org.project.location; + +public class NarrativeConsole { + + //Damage + public static void printDamage(String message) { + System.out.println(AnsiColors.RED + "๐Ÿ’ฅ " + message + AnsiColors.RESET); + } + + //Heal + public static void printHeal(String message) { + System.out.println(AnsiColors.GREEN + "๐Ÿ’š " + message + AnsiColors.RESET); + } + + //Mana + public static void printMana(String message) { + System.out.println(AnsiColors.BLUE + "๐Ÿ’™ " + message + AnsiColors.RESET); + } + + //Warning + public static void printWarning(String message) { + System.out.println(AnsiColors.YELLOW + "โš ๏ธ " + message + AnsiColors.RESET); + } + + //Success + public static void printSuccess(String message) { + System.out.println(AnsiColors.BOLD_GREEN + "โœจ " + message + AnsiColors.RESET); + } + + //Info + public static void printInfo(String message) { + System.out.println(AnsiColors.CYAN + "โ„น๏ธ " + message + AnsiColors.RESET); + } + + //Error + public static void printError(String message) { + System.out.println(AnsiColors.BOLD_RED + "โŒ " + message + AnsiColors.RESET); + } + + //Combat + public static void printCombat(String message) { + System.out.println(AnsiColors.PURPLE + "โš”๏ธ " + message + AnsiColors.RESET); + } + + //Special + public static void printSpecial(String message) { + System.out.println(AnsiColors.BOLD_YELLOW + "โญ " + message + AnsiColors.RESET); + } +} \ No newline at end of file