From 3804297a29c7b40d95d93fa0b908273ef903f7e8 Mon Sep 17 00:00:00 2001 From: Zahra Gharagozloo Mazlaghan Date: Sat, 9 May 2026 23:28:16 +0330 Subject: [PATCH] Adding armors and updating the Armor Class. --- .../org/project/entity/players/Knight.java | 11 +++--- .../java/org/project/item/armors/Armor.java | 37 +++++++++++++++---- .../org/project/item/armors/AssassinMask.java | 7 ++++ .../org/project/item/armors/KnightArmor.java | 8 ++-- .../org/project/item/armors/WizardRobe.java | 8 ++++ .../java/org/project/item/weapons/Sword.java | 23 ++++++++---- 6 files changed, 72 insertions(+), 22 deletions(-) create mode 100644 Java-Knight/src/main/java/org/project/item/armors/AssassinMask.java create mode 100644 Java-Knight/src/main/java/org/project/item/armors/WizardRobe.java 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 fdd9abd..c838b2c 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 @@ -3,12 +3,14 @@ package org.project.entity.players; import org.project.entity.Entity; import org.project.entity.enemies.Enemy; import org.project.item.armors.Armor; +import org.project.item.weapons.Sword; import org.project.item.weapons.Weapon; import java.util.ArrayList; public class Knight extends Player { + Sword sword = new Sword() public Knight(String name, Weapon weapon, Armor armor) { super(name, 45, 45, weapon, armor); } @@ -23,13 +25,12 @@ public class Knight extends Player { } //Consuming mana - super.setMp(super.getMp()-15); + super.setMp(getMp()-15); //Stunning the enemies - target.takeDamage(25); - if (target instanceof Enemy) { - ((Enemy) target).setStunned(true); - } + if (getWeapon() instanceof Sword) { + ((Sword) getWeapon()).uniqueAbility(target); + } System.out.println("💥 Shield Bash! Enemy is stunned!"); } 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 7ca8774..737755e 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 @@ -1,31 +1,54 @@ package org.project.item.armors; -// TODO: UPDATE IMPLEMENTATION -public abstract class Armor { +import org.project.entity.Entity; +import org.project.item.Item; + +public abstract class Armor implements Item { private int defense; private int maxDefense; private int durability; private int maxDurability; - private boolean isBroke; public Armor(int defense, int durability) { this.defense = defense; this.durability = durability; + this.maxDefense = defense; + this.maxDurability = durability; + this.isBroke = false; } public void checkBreak() { if (durability <= 0) { isBroke = true; defense = 0; + durability = 0; + System.out.println("Armor is broken!"); } } - // TODO: (BONUS) UPDATE THE REPAIR METHOD public void repair() { - isBroke = false; - defense = maxDefense; - durability = maxDurability; + if (isBroke) { + isBroke = false; + defense = maxDefense; + durability = maxDurability; + System.out.println("🔧 Armor repaired! Defense: " + defense + ", Durability: " + durability); + } + else { + System.out.println("Armor is not broken. No need to repair."); + } + } + + public void reduceDurability(int amount) { + if (!isBroke) { + durability -= amount; + checkBreak(); + } + } + + @Override + public void use(Entity target) { + System.out.println("🛡️ " + getClass().getSimpleName() + " equipped. Defense: " + defense); } public int getDefense() { diff --git a/Java-Knight/src/main/java/org/project/item/armors/AssassinMask.java b/Java-Knight/src/main/java/org/project/item/armors/AssassinMask.java new file mode 100644 index 0000000..ee73de8 --- /dev/null +++ b/Java-Knight/src/main/java/org/project/item/armors/AssassinMask.java @@ -0,0 +1,7 @@ +package org.project.item.armors; + +public class AssassinMask extends Armor { + public AssassinMask() { + super(4, 20); + } +} 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 eb59a46..77d79ef 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 @@ -1,6 +1,8 @@ package org.project.item.armors; -// TODO: UPDATE IMPLEMENTATION -public class KnightArmor { - // TODO: DESIGN ARMOR'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR +//The knight's armor +public class KnightArmor extends Armor { + public KnightArmor() { + super(5, 25); + } } \ No newline at end of file diff --git a/Java-Knight/src/main/java/org/project/item/armors/WizardRobe.java b/Java-Knight/src/main/java/org/project/item/armors/WizardRobe.java new file mode 100644 index 0000000..168aab0 --- /dev/null +++ b/Java-Knight/src/main/java/org/project/item/armors/WizardRobe.java @@ -0,0 +1,8 @@ +package org.project.item.armors; + +//The Wizard's armor +public class WizardRobe extends Armor { + public WizardRobe() { + super(3, 15); + } +} 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 eee3757..b398b67 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 @@ -1,23 +1,32 @@ package org.project.item.weapons; import org.project.entity.Entity; +import org.project.entity.enemies.Enemy; import org.project.item.Item; import java.util.ArrayList; //The knight's weapon -public class Sword extends Weapon implements Item { - int abilityCharge; +public class Sword extends Weapon { + private int abilityCharge; - public Sword(int damage, int manaCost) { - super(damage, manaCost); + public Sword() { + super(10, 8); this.abilityCharge = 0; } - public void uniqueAbility(ArrayList targets) { + //Bonus method + public void uniqueAbility(Entity target) { abilityCharge += 2; - for (Entity target : targets) { - target.takeDamage(getDamage()); + int totalDamage = getDamage() + (abilityCharge / 2); + + target.takeDamage(totalDamage); + if (target instanceof Enemy) { + ((Enemy) target).setStunned(true); } } + + public int getAbilityCharge() { + return abilityCharge; + } }