From 78771fb0c7de9f439bea95925cbf3782207166da Mon Sep 17 00:00:00 2001 From: emad Date: Mon, 18 May 2026 14:19:04 +0430 Subject: [PATCH] make code cleaner and update REDME.md --- Java-Knight/src/main/java/Main.java | 4 - .../org/project/entity/enemies/Enemy.java | 108 +++--- .../org/project/entity/players/Assassin.java | 107 +++--- .../org/project/entity/players/Knight.java | 55 +-- .../org/project/entity/players/Player.java | 318 ++++++++---------- .../org/project/entity/players/Wizard.java | 80 +++-- .../java/org/project/item/armors/Armor.java | 43 +-- .../project/item/armors/AssassineArmor.java | 4 - .../org/project/item/armors/KnightArmor.java | 7 - .../org/project/item/armors/WizardArmor.java | 27 +- .../project/item/consumables/Consumable.java | 3 +- .../project/item/consumables/GoblinGland.java | 3 - .../project/item/consumables/HolyWater.java | 1 - .../project/item/weapons/AssassineWeapon.java | 28 +- .../java/org/project/item/weapons/Sword.java | 18 +- .../java/org/project/item/weapons/Weapon.java | 4 - .../java/org/project/location/Location.java | 69 ++-- README.md | 2 +- 18 files changed, 375 insertions(+), 506 deletions(-) diff --git a/Java-Knight/src/main/java/Main.java b/Java-Knight/src/main/java/Main.java index 6ecd212..5e4266c 100644 --- a/Java-Knight/src/main/java/Main.java +++ b/Java-Knight/src/main/java/Main.java @@ -264,7 +264,6 @@ public class Main { int round = 0; while (p.isAlive() && e.isAlive()) { -// System.out.println("You choos to fight with " + e.getClass().getSimpleName()); System.out.printf(Colors.ORANGE + "[" + Colors.RESET + p.getName() + " - " +"%d/%d HP | %d/%d Mana" + Colors.ORANGE + "]\n" , p.getHp(), p.getMaxHP(), p.getMp(), p.getMaxMP()); System.out.printf(Colors.ORANGE + "[" + Colors.RESET + e.getClass().getSimpleName() + " - " +"%d/%d HP" + Colors.ORANGE + "]\n" + Colors.RESET, e.getHp(), e.getMaxHP() ); @@ -333,7 +332,6 @@ public class Main { p.showItems(); System.out.println("What do you want to use: "); System.out.println("press 0 to back."); -// System.out.println(p); int input5 = input.nextInt(); while (input5 < 0 || input5 > p.getItems().size()) { @@ -384,7 +382,6 @@ public class Main { } if(e.HaveBleed()) { -// System.out.println(e.getClass().getSimpleName() + " is " + Colors.RED + "Bleeding!\n" + Colors.RESET); e.bleed((AssassineWeapon) p.getWeapon()); } System.out.printf("%s" + "'s turn:\n", e.getClass().getSimpleName()); @@ -432,7 +429,6 @@ public class Main { System.out.println("Good luck!"); return true; } - } return false; } 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 8409c87..e392f70 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 @@ -24,23 +24,7 @@ public abstract class Enemy implements Entity { this.confuse = false; } - public void setConfuse(boolean confuse) { - this.confuse = confuse; - } - - public boolean isConfuse() - { - if(confuse) - { - confuse = false; - return true; - } - return false; - } - - public int getDamage() { - return damage; - } + public abstract void dropKey(Player player); @Override public boolean heal(int health) { @@ -52,11 +36,6 @@ public abstract class Enemy implements Entity { return true; } - @Override - public int getMaxHP() { - return maxHp; - } - public void bleed(AssassineWeapon aw) { if(haveBleed) @@ -74,6 +53,46 @@ public abstract class Enemy implements Entity { } } + @Override + public boolean isAlive() { + return hp > 0; + } + + public int attack() + { + return damage; + } + + @Override + public void takeDamage(int damage) { + hp -= damage; + if(hp < 0) + { + hp = 0; + } + System.out.printf("%s took " + Colors.RED + "%d" + Colors.RESET + " damage!\n",this.getClass().getSimpleName(), damage); + } + + public int getDamage() { + return damage; + } + + @Override + public int getMaxHP() { + return maxHp; + } + + public int getHp() { + return hp; + } + + public void setHp(int hp) { + this.hp = hp; + if(hp > maxHp) + { + hp = maxHp; + } + } public int getBleedingRound() { return bleedingRound; @@ -91,48 +110,17 @@ public abstract class Enemy implements Entity { this.haveBleed = haveBleed; } - @Override - public boolean isAlive() { - return hp > 0; + public void setConfuse(boolean confuse) { + this.confuse = confuse; } - public int attack() + public boolean isConfuse() { - return damage; - } - - - - - - public abstract void dropKey(Player player); - - @Override - public void takeDamage(int damage) { - hp -= damage; - if(hp < 0) + if(confuse) { - hp = 0; + confuse = false; + return true; } - System.out.printf("%s took " + Colors.RED + "%d" + Colors.RESET + " damage!\n",this.getClass().getSimpleName(), damage); + return false; } - - public int getHp() { - return hp; - } - - public void setHp(int hp) { - this.hp = hp; - if(hp > maxHp) - { - hp = maxHp; - } - } - // public int getMp() { -// return mp; -// } - -// public Weapon getWeapon() { -// return weapon; -// } } 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 6a8a5dd..8dd5760 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 @@ -15,6 +15,58 @@ public class Assassin extends Player{ super.setDamage(35); } + + @Override + public boolean heavyAttack(Entity target) { + if(super.getMp() >= super.getWeapon().getManaCost()) { + super.setMp(super.getMp() - super.getWeapon().getManaCost()); + System.out.printf("%s (%s) uses heavy attack.\n", name, this.getClass().getSimpleName()); + target.takeDamage(super.getWeapon().getDamage()); + AssassineWeapon aw = (AssassineWeapon) super.getWeapon(); + aw.manaGain(this, aw.getDamage() / 4); + if(target instanceof Enemy enemy) + { + enemy.setHaveBleed(aw.bleed()); + if(enemy.HaveBleed()) + { + enemy.setBleedingRound(aw.getBleedingRound()); + } + } + return true; + } + System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for heavy attack."); + return false; + } + + + @Override + public boolean specialAbility(Entity target) { + if(super.getMp() >= 80) { + super.setMp(super.getMp() - 80); + System.out.printf("%s (Assassin) uses special ability.\n", super.name); + System.out.println("Assassin dodged the " + Colors.RED + "attack" + Colors.RESET); + AssassineWeapon aw = (AssassineWeapon) super.getWeapon(); + System.out.printf("%s (Assassin) used Critical Strike!\n", super.name); + target.takeDamage(aw.criticalHit()); + return true; + } + System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for your special ability."); + return false; + } + + @Override + public void takeDamage(int damage) { + AssassineArmor asA = (AssassineArmor) super.getArmor(); + int defence = asA.getDefense(damage); + if(defence == damage) + { + System.out.printf("%s (Assassin) dodged the attack.\n", super.name); + } + else { + super.takeDamage(damage - defence); + } + } + @Override public void levelUp() { if(super.getLevel() < 5) { @@ -77,61 +129,6 @@ public class Assassin extends Player{ System.out.println(); showInf(); } - - } - - - @Override - public boolean heavyAttack(Entity target) { - if(super.getMp() >= super.getWeapon().getManaCost()) { - super.setMp(super.getMp() - super.getWeapon().getManaCost()); - System.out.printf("%s (%s) uses heavy attack.\n", name, this.getClass().getSimpleName()); - target.takeDamage(super.getWeapon().getDamage()); - AssassineWeapon aw = (AssassineWeapon) super.getWeapon(); - aw.manaGain(this, aw.getDamage() / 4); - if(target instanceof Enemy enemy) - { - enemy.setHaveBleed(aw.bleed()); - if(enemy.HaveBleed()) - { - enemy.setBleedingRound(aw.getBleedingRound()); - } - } - return true; - } - System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for heavy attack."); - return false; - } - - - @Override - public void takeDamage(int damage) { - AssassineArmor asA = (AssassineArmor) super.getArmor(); - int defence = asA.getDefense(damage); - if(defence == damage) - { - System.out.printf("%s (Assassin) dodged the attack.\n", super.name); - } - else { - super.takeDamage(damage - defence); - } - } - - @Override - public boolean specialAbility(Entity target) { - if(super.getMp() >= 80) { - super.setMp(super.getMp() - 80); - System.out.printf("%s (Assassin) uses special ability.\n", super.name); - System.out.println("Assassin dodged the " + Colors.RED + "attack" + Colors.RESET); - AssassineWeapon aw = (AssassineWeapon) super.getWeapon(); - System.out.printf("%s (Assassin) used Critical Strike!\n", super.name); - target.takeDamage(aw.criticalHit()); - return true; - } - System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for your special ability."); - return false; - - } @Override 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 aa72c97..8896f7f 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 @@ -17,6 +17,20 @@ public class Knight extends Player { super.setDamage(40); } + @Override + public boolean specialAbility(Entity target) { + if(super.getMp() > 65) { + super.setMp(super.getMp() - 65); + System.out.printf("%s (Knight) uses special ability.\n", super.name); + Sword sword = (Sword) super.getWeapon(); + target.takeDamage(sword.getSpecialDamage()); + return true; + } + System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for your special ability."); + return false; + + } + @Override public void levelUp() { if(super.getLevel() < 5) { @@ -72,20 +86,6 @@ public class Knight extends Player { showInf(); } - @Override - public boolean specialAbility(Entity target) { - if(super.getMp() > 65) { - super.setMp(super.getMp() - 65); - System.out.printf("%s (Knight) uses special ability.\n", super.name); - Sword sword = (Sword) super.getWeapon(); - target.takeDamage(sword.getSpecialDamage()); - return true; - } - System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for your special ability."); - return false; - - } - @Override public void showInf() { Sword sword = (Sword) super.getWeapon(); @@ -112,33 +112,6 @@ public class Knight extends Player { super.getArmor().getDurability(), super.getArmor().getDefensePercentage(), sword.getDamage(),sword.getManaCost() ,sword.getSpecialDamage()); } - - - // @Override -// public void defend(int damage) { -// -// if(damage > 60) -// { -// int defense = (80 * damage) / 100; -// this.takeDamage(damage - defense); -// System.out.printf("You took " + Colors.BLUE + "%d" + Colors.RESET + "damage!" + Colors.YELLO + "(%d damage was defended)\n" + Colors.RESET, damage, damage - defense); -// } -// else -// { -// System.out.println("The enemy hit defended!"); -// } -// -// } - - - -// @Override -// public void takeDamage(int damage) { -// super.takeDamage(damage); -// System.out.printf("%s (Knight) took" + Colors.RED + "%d" + Colors.RESET + "damage!\n",super.name, damage - armor.getDefense(damage) ); -// } - - // TODO: DESIGN KNIGHT'S WEAPON AND ARMOR AND IMPLEMENT THE CONSTRUCTOR } 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 0634e65..ec8059c 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 @@ -28,22 +28,9 @@ public abstract class Player implements Entity, ICombatActions { private Boolean goblinKey; private Boolean skeletonKey; private Boolean vampireKey; - private int coin;// write it in constructor with right amount - + private int coin; private int maxDefense; -// - - - - public int getMaxDefense() { - return maxDefense; - } - - public void setMaxDefense(int maxDefense) { - this.maxDefense = maxDefense; - } - public Player(String name, int hp, int mp, Weapon weapon, Armor armor, int maxDefense) { this.name = name; this.hp = hp; @@ -68,6 +55,64 @@ public abstract class Player implements Entity, ICombatActions { target.takeDamage(damage); } + @Override + public boolean heavyAttack(Entity target) { + if(mp >= weapon.getManaCost()) { + System.out.printf("%s (%s) uses heavy attack\n", name, this.getClass().getSimpleName()); + target.takeDamage(weapon.getDamage()); + mp -= weapon.getManaCost(); + return true; + } + System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for heavy attack."); + return false; + } + + @Override + public boolean defend(int damage) { + if(mp > 40) + { + mp -= 40; + if (damage > maxDefense) { + int defense = (80 * damage) / 100; + this.takeDamage(damage - defense); + System.out.printf("You took " + Colors.BLUE + "%d" + Colors.RESET + "damage!" + Colors.YELLO + "(%d damage was defended)\n" + Colors.RESET, damage, damage - defense); + } else { + System.out.println("The enemy hit defended!"); + } + return true; + } + System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " to defend."); + return false; + } + + @Override + public void takeDamage(int damage) { + hp -= (damage - armor.getDefense(damage)); + System.out.printf("%s (%s) took " + Colors.RED + "%d" + Colors.RESET + " damage!\n",name, this.getClass().getSimpleName(), damage - armor.getDefense(damage) ); + } + + public void takeDamage(Dragon dragon) + { + hp -= dragon.getDamage(); + System.out.println("you can't defeat dragon " + Colors.FIRE + "Fire" + Colors.RESET + "!"); + System.out.printf("%s (%s) took " + Colors.RED + "%d" + Colors.RESET + " damage!\n",name, this.getClass().getSimpleName(), dragon.getDamage()); + } + + @Override + public boolean heal(int health) { + if(mp > 45) + { + mp -= 45; + System.out.printf("%s (%s) healed for " +Colors.HEAL +"%d" +Colors.RESET+ " HP.\n", name, this.getClass().getSimpleName(), health); + hp += health; + if (hp > maxHP) { + hp = maxHP; + } + return true; + } + System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " to heal."); + return false; + } public void addItem(Consumable c) { @@ -113,161 +158,10 @@ public abstract class Player implements Entity, ICombatActions { } } - - public void setCoin(int coin) { - this.coin = coin; - } - @Override - public boolean heavyAttack(Entity target) { - if(mp >= weapon.getManaCost()) { - System.out.printf("%s (%s) uses heavy attack\n", name, this.getClass().getSimpleName()); - target.takeDamage(weapon.getDamage()); - mp -= weapon.getManaCost(); - return true; - } - System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for heavy attack."); - return false; - } - - - public void setMp(int mp) { - this.mp = mp; - } - - @Override - public boolean defend(int damage) { - if(mp > 40) - { - mp -= 40; - if (damage > maxDefense) { - int defense = (80 * damage) / 100; - this.takeDamage(damage - defense); - System.out.printf("You took " + Colors.BLUE + "%d" + Colors.RESET + "damage!" + Colors.YELLO + "(%d damage was defended)\n" + Colors.RESET, damage, damage - defense); - } else { - System.out.println("The enemy hit defended!"); - } - return true; - } - System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " to defend."); - return false; - } - - - @Override - public void takeDamage(int damage) { - - // - //max(0 ,damage - armor.getDefense(damage)) - hp -= (damage - armor.getDefense(damage)); - System.out.printf("%s (%s) took " + Colors.RED + "%d" + Colors.RESET + " damage!\n",name, this.getClass().getSimpleName(), damage - armor.getDefense(damage) ); - } - public void takeDamage(Dragon dragon) - { - hp -= dragon.getDamage(); - System.out.println("you can't defeat dragon " + Colors.FIRE + "Fire" + Colors.RESET + "!"); - System.out.printf("%s (%s) took " + Colors.RED + "%d" + Colors.RESET + " damage!\n",name, this.getClass().getSimpleName(), dragon.getDamage()); - } - - - @Override - public boolean heal(int health) { - if(mp > 45) - { - mp -= 45; - System.out.printf("%s (%s) healed for " +Colors.HEAL +"%d" +Colors.RESET+ " HP.\n", name, this.getClass().getSimpleName(), health); - hp += health; - if (hp > maxHP) { - hp = maxHP; - } - return true; - } - System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " to heal."); - return false; - } - - @Override - public boolean isAlive() { - return hp > 0; - } - - public void fillMana(int mana) { - mp += mana; - if (mp > maxMP) { - mp = maxMP; - } - } - public abstract void levelUp(); - /* - (maximum level of every character must be 5) - maxDefense++ - damage++ - hp++ - mp++ - level++ - (mabe open new items in shop) - - */ - - public void showInf() - { - System.out.printf(""" - level: %d - HP: %d - MP: %d - Maximum defence: %d - - armor: - durability: %d - defensePercentage: %d - - weapon: - damage: %d - mana cost: %d - - """, getLevel(), getHp(), getMp(), getMaxDefense(), armor.getDurability(), armor.getDefensePercentage(), weapon.getDamage(), weapon.getManaCost()); - } - - public void setMaxMP(int maxMP) { - this.maxMP = maxMP; - } - - public void setMaxHP(int maxHP) { - this.maxHP = maxHP; - } public void addLevel(){level++;} - public void addXp(int XP) - { - if(xp < 600) - { - this.xp += XP; - System.out.printf("You received %d Xp " + Colors.ORANGE + - "[" + Colors.RESET + "Your Xp: %d" + Colors.ORANGE + "]\n", XP, this.xp); - } - } - public void addXp(Enemy e) - { - if(xp < 600) - { - int amount = 0; - if (e instanceof Goblin) { - amount = 50; - } else if (e instanceof Skeleton) { - amount = 70; - } else if (e instanceof Vampire) { - amount = 90; - - } - this.xp += amount; - System.out.printf("You received %d Xp " + Colors.ORANGE + - "[" + Colors.RESET + "Your Xp: %d" + Colors.ORANGE + "]\n" + Colors.RESET, amount, this.xp); - } - } - - - public Boolean needLevelUp() { switch (this.level) @@ -306,6 +200,66 @@ public abstract class Player implements Entity, ICombatActions { return false; } + public void showInf() + { + System.out.printf(""" + level: %d + HP: %d + MP: %d + Maximum defence: %d + + armor: + durability: %d + defensePercentage: %d + + weapon: + damage: %d + mana cost: %d + + """, getLevel(), getHp(), getMp(), getMaxDefense(), armor.getDurability(), armor.getDefensePercentage(), weapon.getDamage(), weapon.getManaCost()); + } + + @Override + public boolean isAlive() { + return hp > 0; + } + + public void fillMana(int mana) { + mp += mana; + if (mp > maxMP) { + mp = maxMP; + } + } + + public void addXp(int XP) + { + if(xp < 600) + { + this.xp += XP; + System.out.printf("You received %d Xp " + Colors.ORANGE + + "[" + Colors.RESET + "Your Xp: %d" + Colors.ORANGE + "]\n", XP, this.xp); + } + } + + public void addXp(Enemy e) + { + if(xp < 600) + { + int amount = 0; + if (e instanceof Goblin) { + amount = 50; + } else if (e instanceof Skeleton) { + amount = 70; + } else if (e instanceof Vampire) { + amount = 90; + + } + this.xp += amount; + System.out.printf("You received %d Xp " + Colors.ORANGE + + "[" + Colors.RESET + "Your Xp: %d" + Colors.ORANGE + "]\n" + Colors.RESET, amount, this.xp); + } + } + public void addCoin(int amount) { @@ -331,6 +285,10 @@ public abstract class Player implements Entity, ICombatActions { return coin; } + public void setCoin(int coin) { + this.coin = coin; + } + public String getName() { return name; } @@ -339,18 +297,34 @@ public abstract class Player implements Entity, ICombatActions { return hp; } + public void setHp(int hp) { + this.hp = hp; + } + public int getMaxHP() { return maxHP; } - public int getMp() { - return mp; + public void setMaxHP(int maxHP) { + this.maxHP = maxHP; } public int getMaxMP() { return maxMP; } + public void setMp(int mp) { + this.mp = mp; + } + + public void setMaxMP(int maxMP) { + this.maxMP = maxMP; + } + + public int getMp() { + return mp; + } + public Weapon getWeapon() { return weapon; } @@ -363,16 +337,20 @@ public abstract class Player implements Entity, ICombatActions { return damage; } + public void setDamage(int baseDamage){this.damage = baseDamage;} + public int getXp(){return xp;} public int getLevel(){return level;} - public void setDamage(int baseDamage){this.damage = baseDamage;} - public void setHp(int hp) { - this.hp = hp; + public int getMaxDefense() { + return maxDefense; } + public void setMaxDefense(int maxDefense) { + this.maxDefense = maxDefense; + } public Boolean getSkeletonKey() { return skeletonKey; 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 9e4dbe5..52c1c88 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 @@ -15,6 +15,40 @@ public class Wizard extends Player{ super.setMaxMP(super.getMp() + armor.getBonus(this)); } + @Override + public boolean heavyAttack(Entity target) { + if(super.getMp() > super.getWeapon().getManaCost()) { + super.setMp(super.getMp() - super.getWeapon().getManaCost()); + System.out.printf("%s (Wizard) performed a triple attack!\n", super.name); + WizardWeapon wp = (WizardWeapon) super.getWeapon(); + target.takeDamage(wp.tripleAttack()); + return true; + } + System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for heavy attack."); + return false; + + } + + @Override + public boolean specialAbility(Entity target) { + if(super.getMp() > 75) { + super.setMp(super.getMp() - 75); + System.out.printf("%s (Wizard) uses special ability.\n", super.name); + WizardWeapon w = (WizardWeapon) super.getWeapon(); + target.takeDamage(4*w.getDamage()); + super.setHp(super.getHp() + ((6 * super.getMaxHP()) / 10)); + return true; + } + System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for your special ability."); + return false; + } + + public void takeDamage(Entity attacker ,int damage) { + super.takeDamage(damage); + WizardArmor w = (WizardArmor) super.getArmor(); + w.reflect(attacker, damage); + } + @Override public void levelUp() { if(super.getLevel() < 5) { @@ -62,47 +96,11 @@ public class Wizard extends Player{ } } } - super.setHp(super.getMaxHP()); - super.fillMana(super.getMaxMP()); - super.getArmor().repair(); - System.out.println(); - showInf(); - } - - - - public void takeDamage(Entity attacker ,int damage) { - super.takeDamage(damage); - WizardArmor w = (WizardArmor) super.getArmor(); - w.reflect(attacker, damage); - } - - @Override - public boolean heavyAttack(Entity target) { - if(super.getMp() > super.getWeapon().getManaCost()) { - super.setMp(super.getMp() - super.getWeapon().getManaCost()); - System.out.printf("%s (Wizard) performed a triple attack!\n", super.name); - WizardWeapon wp = (WizardWeapon) super.getWeapon(); - target.takeDamage(wp.tripleAttack()); - return true; - } - System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for heavy attack."); - return false; - - } - - @Override - public boolean specialAbility(Entity target) { - if(super.getMp() > 75) { - super.setMp(super.getMp() - 75); - System.out.printf("%s (Wizard) uses special ability.\n", super.name); - WizardWeapon w = (WizardWeapon) super.getWeapon(); - target.takeDamage(4*w.getDamage()); - super.setHp(super.getHp() + ((6 * super.getMaxHP()) / 10)); - return true; - } - System.out.println("You don't have enough " + Colors.BLUE + "Mana" + Colors.RESET + " for your special ability."); - return false; + super.setHp(super.getMaxHP()); + super.fillMana(super.getMaxMP()); + super.getArmor().repair(); + System.out.println(); + showInf(); } @Override diff --git a/Java-Knight/src/main/java/org/project/item/armors/Armor.java b/Java-Knight/src/main/java/org/project/item/armors/Armor.java index ef0c85d..55b8d0c 100644 --- a/Java-Knight/src/main/java/org/project/item/armors/Armor.java +++ b/Java-Knight/src/main/java/org/project/item/armors/Armor.java @@ -2,37 +2,19 @@ package org.project.item.armors; // TODO: UPDATE IMPLEMENTATION public abstract class Armor{ -// private int defense; -// private final int maxDefense; private int defensePercentage; private int maxPercentage; private int durability; private int maxDurability; - - private boolean isBroke; public Armor(int maxPercentage, int maxDurability) { -// this.maxDefense = maxDefense; -// this.defense = maxDefense; this.maxPercentage = maxPercentage; this.defensePercentage = maxPercentage; this.maxDurability = maxDurability; this.durability = maxDurability; } - - public void setMaxDurability(int maxDurability) - { - this.maxDurability = maxDurability; - } - - public int getMaxDurability() { - return maxDurability; - } - - - public void checkBreak() { if (durability <= 0) { isBroke = true; @@ -60,14 +42,6 @@ public abstract class Armor{ return durability; } - public boolean isBroke() { - return isBroke; - } - - public void setBroke(boolean broke) { - isBroke = broke; - } - public void setDurability(int durability) { this.durability = durability; } @@ -83,6 +57,15 @@ public abstract class Armor{ } } + public void setMaxDurability(int maxDurability) + { + this.maxDurability = maxDurability; + } + + public int getMaxDurability() { + return maxDurability; + } + public void setMaxPercentage(int maxPercentage) { this.maxPercentage = maxPercentage; } @@ -94,4 +77,12 @@ public abstract class Armor{ public int getDefensePercentage() { return defensePercentage; } + + public boolean isBroke() { + return isBroke; + } + + public void setBroke(boolean broke) { + isBroke = broke; + } } diff --git a/Java-Knight/src/main/java/org/project/item/armors/AssassineArmor.java b/Java-Knight/src/main/java/org/project/item/armors/AssassineArmor.java index 4aff36a..e702758 100644 --- a/Java-Knight/src/main/java/org/project/item/armors/AssassineArmor.java +++ b/Java-Knight/src/main/java/org/project/item/armors/AssassineArmor.java @@ -3,12 +3,8 @@ package org.project.item.armors; import java.util.Random; public class AssassineArmor extends Armor{ - private int dodgeChance; - - - public AssassineArmor() { super(12, 100); this.dodgeChance = 10; diff --git a/Java-Knight/src/main/java/org/project/item/armors/KnightArmor.java b/Java-Knight/src/main/java/org/project/item/armors/KnightArmor.java index 296fa8a..14ee5d8 100644 --- a/Java-Knight/src/main/java/org/project/item/armors/KnightArmor.java +++ b/Java-Knight/src/main/java/org/project/item/armors/KnightArmor.java @@ -8,12 +8,5 @@ public class KnightArmor extends Armor { public KnightArmor() { super(80, 100); } - -// public void useAsWeapon(Entity target) { -// //it will useAsWeapon the Knight armor as weapon -// target.takeDamage(super.getDurability()); -// super.setBroke(true); -// } - // TODO: DESIGN ARMOR'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR } \ No newline at end of file diff --git a/Java-Knight/src/main/java/org/project/item/armors/WizardArmor.java b/Java-Knight/src/main/java/org/project/item/armors/WizardArmor.java index 56b8d44..8540608 100644 --- a/Java-Knight/src/main/java/org/project/item/armors/WizardArmor.java +++ b/Java-Knight/src/main/java/org/project/item/armors/WizardArmor.java @@ -7,7 +7,6 @@ import org.project.entity.players.Wizard; public class WizardArmor extends Armor{ //Reflects enemy attacks back to itself. //you get mana bonus - private int bonusPercent; private int reflectPercent; @@ -17,6 +16,19 @@ public class WizardArmor extends Armor{ this.reflectPercent = 20; } + public void reflect(Entity attacker, int damage) + { + + System.out.printf( Colors.ORANGE + "%d" + Colors.RESET + " of damage reflected.\n", (reflectPercent*damage) / 100); + attacker.takeDamage((reflectPercent*damage) / 100); + super.reduceDurability(12); + } + + public int getBonus(Wizard w) + { + return (bonusPercent*w.getMaxMP()) / 100; + } + public int getBonusPercent() { return bonusPercent; @@ -33,17 +45,4 @@ public class WizardArmor extends Armor{ public void setReflectPercent(int reflectPercent) { this.reflectPercent = reflectPercent; } - - public int getBonus(Wizard w) - { - return (bonusPercent*w.getMaxMP()) / 100; - } - - public void reflect(Entity attacker, int damage) - { - - System.out.printf( Colors.ORANGE + "%d" + Colors.RESET + " of damage reflected.\n", (reflectPercent*damage) / 100); - attacker.takeDamage((reflectPercent*damage) / 100); - super.reduceDurability(12); - } } diff --git a/Java-Knight/src/main/java/org/project/item/consumables/Consumable.java b/Java-Knight/src/main/java/org/project/item/consumables/Consumable.java index e9b619e..138c09d 100644 --- a/Java-Knight/src/main/java/org/project/item/consumables/Consumable.java +++ b/Java-Knight/src/main/java/org/project/item/consumables/Consumable.java @@ -11,6 +11,7 @@ public abstract class Consumable { private int value; int numberOf; private final String targetType; + public Consumable(String name, int value, String targetType) { this.name = name; this.value = value; @@ -25,7 +26,6 @@ public abstract class Consumable { return name; } - public String getTargetType() { return targetType; } @@ -34,6 +34,7 @@ public abstract class Consumable { { numberOf++; } + public void reduceOne(){numberOf--;} public int getNumberOf() { diff --git a/Java-Knight/src/main/java/org/project/item/consumables/GoblinGland.java b/Java-Knight/src/main/java/org/project/item/consumables/GoblinGland.java index 7c18603..dbe63a2 100644 --- a/Java-Knight/src/main/java/org/project/item/consumables/GoblinGland.java +++ b/Java-Knight/src/main/java/org/project/item/consumables/GoblinGland.java @@ -7,9 +7,6 @@ import org.project.entity.enemies.Enemy; public class GoblinGland extends Consumable{ public GoblinGland() { super("Goblin Gland", 15, "Enemy"); - - - } @Override diff --git a/Java-Knight/src/main/java/org/project/item/consumables/HolyWater.java b/Java-Knight/src/main/java/org/project/item/consumables/HolyWater.java index 7cc7698..a6aa983 100644 --- a/Java-Knight/src/main/java/org/project/item/consumables/HolyWater.java +++ b/Java-Knight/src/main/java/org/project/item/consumables/HolyWater.java @@ -9,7 +9,6 @@ public class HolyWater extends Consumable{ public HolyWater() { super("Holy Water", 40, "Enemy"); - } @Override diff --git a/Java-Knight/src/main/java/org/project/item/weapons/AssassineWeapon.java b/Java-Knight/src/main/java/org/project/item/weapons/AssassineWeapon.java index cf5906a..adf8b0c 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/AssassineWeapon.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/AssassineWeapon.java @@ -12,10 +12,8 @@ public class AssassineWeapon extends Weapon{ private int bleedDamage; private int bleedingRound; - public AssassineWeapon() { super(45, 55); -// this.silenceChance = 14; this.bleedChance = 30; this.bleedDamage = 10; this.bleedingRound = 1; @@ -28,14 +26,14 @@ public class AssassineWeapon extends Weapon{ public int criticalHit() { - return 3*super.getDamage(); } -// public Boolean silence() -// { -// return new Random().nextInt(100) < silenceChance; -// } + public void manaGain(Assassin assassin, int amount) + { + System.out.printf("%d of damage gained as " + Colors.BLUE + "Mana.\n" + Colors.RESET, amount); + assassin.fillMana(amount); + } public int getBleedingRound() { return bleedingRound; @@ -60,20 +58,4 @@ public class AssassineWeapon extends Weapon{ public void setBleedDamage(int bleedDamage) { this.bleedDamage = bleedDamage; } -// -// public int getSilenceChance() { -// return silenceChance; -// } -// -// public void setSilenceChance(int silenceChance) { -// this.silenceChance = silenceChance; -// } - - - - public void manaGain(Assassin assassin, int amount) - { - System.out.printf("%d of damage gained as " + Colors.BLUE + "Mana.\n" + Colors.RESET, amount); - assassin.fillMana(amount); - } } diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Sword.java b/Java-Knight/src/main/java/org/project/item/weapons/Sword.java index 6843a50..a4100ae 100644 --- a/Java-Knight/src/main/java/org/project/item/weapons/Sword.java +++ b/Java-Knight/src/main/java/org/project/item/weapons/Sword.java @@ -9,9 +9,9 @@ public class Sword extends Weapon { /* THIS IS AN EXAMPLE OF A WEAPON DESIGN. */ - int abilityCharge; private int specialDamage; + public Sword() { super(65, 50); @@ -19,6 +19,14 @@ public class Sword extends Weapon { // TODO: DESIGN SWORD'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR } + // TODO: (BONUS) UPDATE THE UNIQUE ABILITY + + public void uniqueAbility(ArrayList targets) { + abilityCharge += 2; + for (Entity target : targets) { + target.takeDamage(getDamage()); + } + } public int getSpecialDamage() { return specialDamage; @@ -27,12 +35,4 @@ public class Sword extends Weapon { public void setSpecialDamage(int specialDamage) { this.specialDamage = specialDamage; } - - // TODO: (BONUS) UPDATE THE UNIQUE ABILITY - public void uniqueAbility(ArrayList targets) { - abilityCharge += 2; - for (Entity target : targets) { - target.takeDamage(getDamage()); - } - } } 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 13c7ad1..1a66a24 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 @@ -14,9 +14,6 @@ public abstract class Weapon{ this.manaCost = manaCost; } - - - public int getDamage() { return damage; } @@ -25,7 +22,6 @@ public abstract class Weapon{ this.damage = damage; } - public void setManaCost(int manaCost) { this.manaCost = manaCost; } diff --git a/Java-Knight/src/main/java/org/project/location/Location.java b/Java-Knight/src/main/java/org/project/location/Location.java index 17208fa..9c07e05 100644 --- a/Java-Knight/src/main/java/org/project/location/Location.java +++ b/Java-Knight/src/main/java/org/project/location/Location.java @@ -13,53 +13,14 @@ public class Location { private int skeleton = 0; private int vampire = 0; private int goblin = 0; - - - private ArrayList enemies; -// private ArrayList locations; - - -// ArrayList locations public Location(String name) { -// this.locations = locations; this.name = name; this.enemies = new ArrayList<>(); // this.isDiscovered = false; } - - - public int getGoblin() { - return goblin; - } - - public int getVampire() { - return vampire; - } - - public int getSkeleton() { - return skeleton; - } - - public void addEnemy(Enemy enemy) - { - enemies.add(enemy); - if(enemy instanceof Skeleton) - { - skeleton++; - } else if (enemy instanceof Vampire) - { - vampire++; - } - else if(enemy instanceof Goblin) - { - goblin++; - } - - } - public void defeatEnemy(Enemy enemy) { enemies.remove(enemy); @@ -103,14 +64,38 @@ public class Location { enemy.setBleedingRound(0); } } + public String getName() { return name; } -// public ArrayList getLocations() { -// return locations; -// } + public int getGoblin() { + return goblin; + } + public int getVampire() { + return vampire; + } + + public int getSkeleton() { + return skeleton; + } + + public void addEnemy(Enemy enemy) + { + enemies.add(enemy); + if(enemy instanceof Skeleton) + { + skeleton++; + } else if (enemy instanceof Vampire) + { + vampire++; + } + else if(enemy instanceof Goblin) + { + goblin++; + } + } // public Boolean isDiscovered() { // return isDiscovered; diff --git a/README.md b/README.md index 25bb01d..5cff09d 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ For centuries, the land of Javanest lived in peace, until a magical Dragon attac ### 🔮 Wizard - **Highest HP**, average mana. - **Weapon (Wooden Staff):** Allows a **triple attack** (three strikes in one turn). -- **Armor (Robe):** Low defence, but **reflects some attacks** back to the enemy. +- **Armor (Robe):** Low defence, but **reflects some attacks** back to the enemy, give you some **mana bunos** - **Special attack (Destructive Spell):** Massive damage to one enemy **and heals the Wizard** for a portion of that damage. - **Low base damage** – relies on special and triple attack. - **Passive:** Worst damage reduction – you feel every hit.