diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..42061c0
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+README.md
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 7c34d9c..ac3b3a7 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,5 +1,6 @@
+
\ No newline at end of file
diff --git a/Java-Ring/src/main/java/org/project/Main.java b/Java-Ring/src/main/java/org/project/Main.java
index c2e0550..eb809e3 100644
--- a/Java-Ring/src/main/java/org/project/Main.java
+++ b/Java-Ring/src/main/java/org/project/Main.java
@@ -1,15 +1,79 @@
-package org.project;
+import org.project.entity.Entity;
+import org.project.entity.players.Assassin;
+import org.project.entity.players.Knight;
+import org.project.entity.players.Wizard;
+import org.project.entity.enemies.Dragon;
+import org.project.entity.enemies.Goblin;
+import org.project.entity.enemies.Skeleton;
+import org.project.object.weapons;
+import org.project.object.weapons.Sward;
+import org.project.object.armors;
+import org.project.object.armors.KnightArmor;
-import org.project.location.Location;
-import java.util.ArrayList;
-import java.util.List;
-public class Main {
+import java.util.Scanner;
+
+public class JavaRingGame {
+
public static void main(String[] args) {
- // TODO: ADD SOME LOCATIONS TO YOUR GAME
- List locations = new ArrayList<>();
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.println("Select your character: ");
+ System.out.println("1. Wizard");
+ System.out.println("2. Knight");
+ System.out.println("3. Assassin");
+
+ int choice = scanner.nextInt();
+ Entity player = null;
+
+ switch (choice) {
+ case 1:
+ player = new Wizard(100, 50, new Sword(30, 10));
+ break;
+ case 2:
+ player = new Knight(120, 30, new Sword(40, 15));
+ break;
+ case 3:
+ player = new Assassin(80, 70, new Sword(25, 5));
+ break;
+ default:
+ System.out.println("Invalid choice, defaulting to Wizard.");
+ player = new Wizard(100, 50, new Sword(30, 10));
+ }
+
+ Entity enemy = generateRandomEnemy();
+
+ System.out.println("\nYour enemy: " + enemy.getClass().getSimpleName());
+ System.out.println("Battle Start!");
+
+ while (player.isAlive() && enemy.isAlive()) {
+ System.out.println("\nYour turn to attack!");
+ player.attack(enemy);
+ if (enemy.isAlive()) {
+ System.out.println("\nEnemy's turn to attack!");
+ enemy.attack(player);
+ }
+ }
+
+ if (!player.isAlive()) {
+ System.out.println("You have been defeated by " + enemy.getClass().getSimpleName() + "!");
+ } else if (!enemy.isAlive()) {
+ System.out.println("You have defeated " + enemy.getClass().getSimpleName() + "!");
+ }
+ }
- // TODO: IMPLEMENT GAMEPLAY
+ public static Entity generateRandomEnemy() {
+ int rand = (int) (Math.random() * 3);
+ switch (rand) {
+ case 0:
+ return new Goblin(50, 20, new Sword(15, 5));
+ case 1:
+ return new Skeleton(70, 25, new Sword(20, 8));
+ case 2:
+ return new Dragon(200, 50, new Sword(50, 20));
+ default:
+ return new Goblin(50, 20, new Sword(15, 5)); // Default enemy
+ }
}
-}
\ No newline at end of file
+}
diff --git a/Java-Ring/src/main/java/org/project/entity/Entity.java b/Java-Ring/src/main/java/org/project/entity/Entity.java
index 2a060f9..7c6b349 100644
--- a/Java-Ring/src/main/java/org/project/entity/Entity.java
+++ b/Java-Ring/src/main/java/org/project/entity/Entity.java
@@ -15,7 +15,5 @@ public interface Entity {
int getMaxMP();
- /*
- TODO: ADD OTHER REQUIRED AND BONUS METHODS
- */
+ boolean isAlive();
}
diff --git a/Java-Ring/src/main/java/org/project/entity/enemies/Dragon.java b/Java-Ring/src/main/java/org/project/entity/enemies/Dragon.java
new file mode 100644
index 0000000..29d407c
--- /dev/null
+++ b/Java-Ring/src/main/java/org/project/entity/enemies/Dragon.java
@@ -0,0 +1,70 @@
+package org.project.entity.enemies;
+
+import org.project.object.armors.Armor;
+import org.project.object.weapons.Weapon;
+import org.project.entity.Entity;
+
+public class Dragon extends Enemy {
+ private static final int FIREBALL_DAMAGE = 30;
+ private static final int FIREBALL_MANA_COST = 20;
+
+ public Dragon(int hp, int mp, Weapon weapon) {
+ super(hp, mp, weapon);
+ }
+
+ @Override
+ public void attack(Entity target) {
+ if (getMp() >= FIREBALL_MANA_COST) {
+ System.out.println("🔥 Dragon breathes fire!");
+ target.takeDamage(FIREBALL_DAMAGE);
+ fillMana(-FIREBALL_MANA_COST);
+ } else {
+ super.attack(target);
+ }
+ }
+
+ @Override
+ public void takeDamage(int damage) {
+ int reducedDamage = damage / 2;
+ super.takeDamage(reducedDamage);
+ System.out.println("🛡️ Dragon's tough scales reduce damage!");
+ }
+
+ public void fly() {
+ System.out.println("🐉 Dragon flies into the sky, preparing for a powerful attack!");
+ }
+}
+package org.project.entity.enemies;
+
+import org.project.object.weapons.Weapon;
+
+public class Dragon extends Enemy {
+ private static final int FIREBALL_DAMAGE = 30;
+ private static final int FIREBALL_MANA_COST = 20;
+
+ public Dragon(int hp, int mp, Weapon weapon) {
+ super(hp, mp, weapon);
+ }
+
+ @Override
+ public void attack(Entity target) {
+ if (getMp() >= FIREBALL_MANA_COST) {
+ System.out.println("🔥 Dragon breathes fire!");
+ target.takeDamage(FIREBALL_DAMAGE);
+ fillMana(-FIREBALL_MANA_COST);
+ } else {
+ super.attack(target);
+ }
+ }
+
+ @Override
+ public void takeDamage(int damage) {
+ int reducedDamage = damage / 2;
+ super.takeDamage(reducedDamage);
+ System.out.println("🛡️ Dragon's tough scales reduce damage!");
+ }
+
+ public void fly() {
+ System.out.println("🐉 Dragon flies into the sky, preparing for a powerful attack!");
+ }
+}
\ No newline at end of file
diff --git a/Java-Ring/src/main/java/org/project/entity/enemies/Enemy.java b/Java-Ring/src/main/java/org/project/entity/enemies/Enemy.java
index 1fcc491..83c93d3 100644
--- a/Java-Ring/src/main/java/org/project/entity/enemies/Enemy.java
+++ b/Java-Ring/src/main/java/org/project/entity/enemies/Enemy.java
@@ -2,23 +2,64 @@
import org.project.object.weapons.Weapon;
-// TODO: UPDATE IMPLEMENTATION
-public abstract class Enemy {
- Weapon weapon;
+public abstract class Enemy implements Entity {
+ protected Weapon weapon;
+ private int maxHP;
+ private int maxMP;
private int hp;
private int mp;
public Enemy(int hp, int mp, Weapon weapon) {
+ this.maxHP = hp;
+ this.maxMP = mp;
this.hp = hp;
this.mp = mp;
-
this.weapon = weapon;
}
- // TODO: (BONUS) UPDATE THE FORMULA OF TAKING DAMAGE
+ @Override
+ public void attack(Entity target) {
+ if (weapon != null) {
+ System.out.println("Enemy attacks with " + weapon.getName());
+ target.takeDamage(weapon.getDamage());
+ } else {
+ System.out.println("Enemy has no weapon to attack!");
+ }
+ }
+
@Override
public void takeDamage(int damage) {
hp -= damage;
+ if (hp <= 0) {
+ hp = 0;
+ System.out.println("Enemy has been defeated!");
+ }
+ }
+
+ @Override
+ public void heal(int health) {
+ hp += health;
+ if (hp > maxHP) {
+ hp = maxHP;
+ }
+ }
+
+ @Override
+ public void fillMana(int mana) {
+ mp += mana;
+ if (mp > maxMP) {
+ mp = maxMP;
+ }
+ }
+
+ @Override
+ public int getMaxHP() {
+ return maxHP;
+ }
+
+ @Override
+ public int getMaxMP() {
+ return maxMP;
}
public int getHp() {
diff --git a/Java-Ring/src/main/java/org/project/entity/enemies/Goblin.java b/Java-Ring/src/main/java/org/project/entity/enemies/Goblin.java
new file mode 100644
index 0000000..a2ae371
--- /dev/null
+++ b/Java-Ring/src/main/java/org/project/entity/enemies/Goblin.java
@@ -0,0 +1,30 @@
+package org.project.entity.enemies;
+
+import org.project.object.armors.Armor;
+import org.project.object.weapons.Weapon;
+import org.project.entity.Entity;
+import java.util.Random;
+
+public class Goblin extends Enemy {
+ private static final double CRITICAL_CHANCE = 0.1;
+
+ public Goblin(int hp, int mp, Weapon weapon) {
+ super(hp, mp, weapon);
+ }
+
+ @Override
+ public void attack(Entity target) {
+ Random rand = new Random();
+ for (int i = 0; i < 2; i++) { // دو بار حمله میکند
+ int damage = (weapon != null) ? weapon.getDamage() / 2 : 5;
+
+ if (i == 0 && rand.nextDouble() < CRITICAL_CHANCE) {
+ damage *= 2;
+ System.out.println("💥 Goblin lands a CRITICAL HIT!");
+ }
+
+ System.out.println("⚔️ Goblin attacks for " + damage + " damage!");
+ target.takeDamage(damage);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Java-Ring/src/main/java/org/project/entity/enemies/Skeleton.java b/Java-Ring/src/main/java/org/project/entity/enemies/Skeleton.java
index 8c3e638..02aa55b 100644
--- a/Java-Ring/src/main/java/org/project/entity/enemies/Skeleton.java
+++ b/Java-Ring/src/main/java/org/project/entity/enemies/Skeleton.java
@@ -1,6 +1,34 @@
package org.project.entity.enemies;
-// TODO: UPDATE IMPLEMENTATION
-public class Skeleton {
- // TODO: DESIGN ENEMY'S WEAPON AND ARMOR AND IMPLEMENT THE CONSTRUCTOR
-}
+import org.project.object.armors.Armor;
+import org.project.object.weapons.Weapon;
+import org.project.entity.Entity;
+import java.util.Random;
+
+public class Skeleton extends Enemy {
+ private boolean resurrected = false;
+
+ public Skeleton(int hp, int mp, Weapon weapon) {
+ super(hp, mp, weapon);
+ }
+
+ @Override
+ public void takeDamage(int damage) {
+ int finalDamage = damage;
+ if (weapon != null) {
+ finalDamage *= 0.75;
+ }
+
+ super.takeDamage(finalDamage);
+ System.out.println("🦴 Skeleton resists some damage!");
+
+ if (getHp() == 0 && !resurrected) {
+ Random rand = new Random();
+ if (rand.nextBoolean()) {
+ resurrected = true;
+ heal(getMaxHP() / 2);
+ System.out.println("💀 Skeleton resurrects with half HP!");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Java-Ring/src/main/java/org/project/entity/players/Assassin.java b/Java-Ring/src/main/java/org/project/entity/players/Assassin.java
new file mode 100644
index 0000000..a24fbf5
--- /dev/null
+++ b/Java-Ring/src/main/java/org/project/entity/players/Assassin.java
@@ -0,0 +1,42 @@
+package org.project.entity.players;
+
+import org.project.object.armors.Armor;
+import org.project.object.weapons.Weapon;
+import org.project.entity.Entity;
+
+public class Assassin extends Assassin {
+
+ public Assassin(String name, 200, 40, weapon, armor) {
+
+ @Override
+ public void attack(Entity target) {
+ System.out.println(getName() + " attacks with a" + weapon.getname());
+ super.attack(target);
+ }
+
+ @Override
+ public void defend() {
+ System.out.println(getName() + " raises his shield!");
+ super.defend();
+ }
+
+ @Override
+ public void takeDamage(int damage) {
+ System.out.println(getName() + " takes " + damage + " damage!");
+ super.takeDamage(damage);
+ }
+
+ @Override
+ public void heal(int health) {
+ System.out.println(getName() + " heals for " + health + " health!");
+ super.heal(health);
+ }
+
+ @Override
+ public void fillMana(int mana) {
+ System.out.println(getName() + " restores " + mana + " mana!");
+ super.fillMana(mana);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Java-Ring/src/main/java/org/project/entity/players/Knight.java b/Java-Ring/src/main/java/org/project/entity/players/Knight.java
index 14d8fa2..979ad69 100644
--- a/Java-Ring/src/main/java/org/project/entity/players/Knight.java
+++ b/Java-Ring/src/main/java/org/project/entity/players/Knight.java
@@ -1,6 +1,43 @@
package org.project.entity.players;
-// TODO: UPDATE IMPLEMENTATION
-public class Knight {
- // TODO: DESIGN KNIGHT'S WEAPON AND ARMOR AND IMPLEMENT THE CONSTRUCTOR
+import org.project.object.armors.Armor;
+import org.project.object.weapons.Weapon;
+import org.project.entity.Entity;
+
+public class Knight extends Player {
+
+ public Knight(String name, Weapon weapon, Armor armor) {
+ super(name,150,30,weapon,armor);
+ }
+
+ @Override
+ public void attack(Entity target) {
+ System.out.println(getName() + " attacks with a sword!");
+ super.attack(target);
+ }
+
+ @Override
+ public void defend() {
+ System.out.println(getName() + " raises his shield!");
+ super.defend();
+ }
+
+ @Override
+ public void takeDamage(int damage) {
+ System.out.println(getName() + " takes " + damage + " damage!");
+ super.takeDamage(damage);
+ }
+
+ @Override
+ public void heal(int health) {
+ System.out.println(getName() + " heals for " + health + " health!");
+ super.heal(health);
+ }
+
+ @Override
+ public void fillMana(int mana) {
+ System.out.println(getName() + " restores " + mana + " mana!");
+ super.fillMana(mana);
+ }
}
+
diff --git a/Java-Ring/src/main/java/org/project/entity/players/Player.java b/Java-Ring/src/main/java/org/project/entity/players/Player.java
index 674905a..f8b1116 100644
--- a/Java-Ring/src/main/java/org/project/entity/players/Player.java
+++ b/Java-Ring/src/main/java/org/project/entity/players/Player.java
@@ -5,26 +5,29 @@
import org.project.object.weapons.Weapon;
// TODO: UPDATE IMPLEMENTATION
-public abstract class Player {
+public abstract class Player implements Entity{
protected String name;
- Weapon weapon;
- Armor armor;
+ protected Weapon weapon;
+ protected Armor armor;
private int hp;
private int maxHP;
private int mp;
private int maxMP;
- public Player(String name, int hp, int mp, Weapon weapon, Armor armor) {
+ public Player(String name, int hp, int mp, Weapon weapon, Armor armor, int maxHP, int maxMP) {
this.name = name;
- this.hp = hp;
- this.mp = mp;
-
+ this.hp = maxHP;
+ this.mp = maxMP;
+ this.maxHP = maxHP;
+ this.maxMP = maxMP;
this.weapon = weapon;
this.armor = armor;
}
@Override
public void attack(Entity target) {
+ int damage = weapon.getDamage;
+ System.out.println(name + " attacks " + ((target instanceof Player) ? ((Player) target).getName() : "the enemy") + " with " + damage + " damage.");
target.takeDamage(weapon.getDamage());
}
@@ -37,14 +40,14 @@ public void defend() {
@Override
public void takeDamage(int damage) {
hp -= damage - armor.getDefense();
+ System.out.println(name + " took " + reducedDamage + " damage. [HP: " + hp + "/" + maxHP + "]");
}
@Override
public void heal(int health) {
hp += health;
- if (hp > maxHP) {
- hp = maxHP;
- }
+ hp = Math.min(maxHP, hp + health);
+ System.out.println(name + " healed for " + health + " HP. [HP: " + hp + "/" + maxHP + "]");
}
@Override
@@ -53,8 +56,16 @@ public void fillMana(int mana) {
if (mp > maxMP) {
mp = maxMP;
}
+ System.out.println(name + " restored " + mana + " MP. [MP: " + mp + "/" + maxMP + "]");
+ }
+
+ public boolean isAlive() {
+ return hp > 0;
}
+ public void displayStatus() {
+ System.out.println(name + " [HP: " + hp + "/" + maxHP + ", MP: " + mp + "/" + maxMP + "]");
+ }
public String getName() {
return name;
@@ -85,5 +96,4 @@ public Weapon getWeapon() {
public Armor getArmor() {
return armor;
}
-
}
diff --git a/Java-Ring/src/main/java/org/project/entity/players/Wizard.java b/Java-Ring/src/main/java/org/project/entity/players/Wizard.java
new file mode 100644
index 0000000..ab2ff51
--- /dev/null
+++ b/Java-Ring/src/main/java/org/project/entity/players/Wizard.java
@@ -0,0 +1,41 @@
+package org.project.entity.players;
+
+import org.project.object.armors.Armor;
+import org.project.object.weapons.Weapon;
+import org.project.entity.Entity;
+
+public class Wizard extends Player {
+ public Wizard(String name, Weapon weapon, Armor armor) {
+ super (name, 200, 40, weapon, armor);
+ }
+
+ @Override
+ public void attack(Entity target) {
+ System.out.println(getName() + " attacks with a" + weapon.getname());
+ super.attack(target);
+ }
+
+ @Override
+ public void defend() {
+ System.out.println(getName() + " raises his shield!");
+ super.defend();
+ }
+
+ @Override
+ public void takeDamage(int damage) {
+ System.out.println(getName() + " takes " + damage + " damage!");
+ super.takeDamage(damage);
+ }
+
+ @Override
+ public void heal(int health) {
+ System.out.println(getName() + " heals for " + health + " health!");
+ super.heal(health);
+ }
+
+ @Override
+ public void fillMana(int mana) {
+ System.out.println(getName() + " restores " + mana + " mana!");
+ super.fillMana(mana);
+ }
+}
\ No newline at end of file
diff --git a/Java-Ring/src/main/java/org/project/object/Object.java b/Java-Ring/src/main/java/org/project/object/Object.java
index 922cbd5..a7212a5 100644
--- a/Java-Ring/src/main/java/org/project/object/Object.java
+++ b/Java-Ring/src/main/java/org/project/object/Object.java
@@ -1,11 +1,21 @@
package org.project.object;
-import org.project.entity.Entity;
+public abstract class GameObject {
+ protected String name;
+ protected double weight;
-public interface Object {
- void use(Entity target);
+ public GameObject(String name, double weight) {
+ this.name = name;
+ this.weight = weight;
+ }
- /*
- TODO: ADD OTHER REQUIRED AND BONUS METHODS
- */
+ public String getName() {
+ return name;
+ }
+
+ public double getWeight() {
+ return weight;
+ }
+
+ public abstract void use();
}
diff --git a/Java-Ring/src/main/java/org/project/object/armors/Armor.java b/Java-Ring/src/main/java/org/project/object/armors/Armor.java
index 346c25e..d8391b6 100644
--- a/Java-Ring/src/main/java/org/project/object/armors/Armor.java
+++ b/Java-Ring/src/main/java/org/project/object/armors/Armor.java
@@ -1,6 +1,5 @@
package org.project.object.armors;
-// TODO: UPDATE IMPLEMENTATION
public abstract class Armor {
private int defense;
private int maxDefense;
@@ -9,23 +8,39 @@ public abstract class Armor {
private boolean isBroke;
- public Armor(int defense, int durability) {
- this.defense = defense;
- this.durability = durability;
+ // Constructor that accepts defense and durability
+ public Armor(int maxDefense, int maxDurability) {
+ this.maxDefense = maxDefense;
+ this.defense = maxDefense; // Defense starts at max value
+ this.maxDurability = maxDurability;
+ this.durability = maxDurability; // Durability starts at max value
+ this.isBroke = false;
}
+ // Check if armor is broken
public void checkBreak() {
if (durability <= 0) {
isBroke = true;
defense = 0;
+ System.out.println("Armor is broken! Defense is now 0.");
}
}
- // TODO: (BONUS) UPDATE THE REPAIR METHOD
+ // Repair armor to its maximum defense and durability
public void repair() {
- isBroke = false;
- defense = maxDefense;
- durability = maxDurability;
+ if (isBroke) {
+ isBroke = false;
+ defense = maxDefense;
+ durability = maxDurability;
+ System.out.println("Armor repaired. Defense and durability restored.");
+ }
+ }
+
+ // Wear down durability over time
+ public void reduceDurability(int amount) {
+ durability -= amount;
+ if (durability < 0) durability = 0; // Ensure durability doesn't go below 0
+ checkBreak(); // Check if the armor is broken after taking damage
}
public int getDefense() {
@@ -39,4 +54,12 @@ public int getDurability() {
public boolean isBroke() {
return isBroke;
}
-}
+
+ public int getMaxDefense() {
+ return maxDefense;
+ }
+
+ public int getMaxDurability() {
+ return maxDurability;
+ }
+}
\ No newline at end of file
diff --git a/Java-Ring/src/main/java/org/project/object/armors/KnightArmor.java b/Java-Ring/src/main/java/org/project/object/armors/KnightArmor.java
index 0dedcc2..5eccc21 100644
--- a/Java-Ring/src/main/java/org/project/object/armors/KnightArmor.java
+++ b/Java-Ring/src/main/java/org/project/object/armors/KnightArmor.java
@@ -1,6 +1,28 @@
package org.project.object.armors;
-// TODO: UPDATE IMPLEMENTATION
-public class KnightArmor {
- // TODO: DESIGN ARMOR'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR
-}
\ No newline at end of file
+public class KnightArmor extends Armor {
+ private static final int EXTRA_DEFENSE = 20;
+
+ public KnightArmor() {
+ super(50, 100);
+ }
+
+ @Override
+ public void repair() {
+ super.repair();
+ System.out.println("⚔️ Knight's armor is repaired, ready for battle!");
+ }
+
+ public void boostDefense() {
+ if (!isBroke()) {
+ defense += EXTRA_DEFENSE;
+ System.out.println("💪 Knight's armor defense boosted by " + EXTRA_DEFENSE);
+ }
+ }
+
+ @Override
+ public void reduceDurability(int amount) {
+ super.reduceDurability(amount);
+ checkBreak();
+ }
+}
diff --git a/Java-Ring/src/main/java/org/project/object/weapons/Sword.java b/Java-Ring/src/main/java/org/project/object/weapons/Sword.java
index a0e3cc3..42dbf74 100644
--- a/Java-Ring/src/main/java/org/project/object/weapons/Sword.java
+++ b/Java-Ring/src/main/java/org/project/object/weapons/Sword.java
@@ -1,26 +1,40 @@
package org.project.object.weapons;
import org.project.entity.Entity;
-
import java.util.ArrayList;
-// TODO: UPDATE IMPLEMENTATION
-public class Sword {
- /*
- THIS IS AN EXAMPLE OF A WEAPON DESIGN.
- */
+public class Sword extends Weapon {
+ private int abilityCharge;
- int abilityCharge;
+ public Sword(int damage, int manaCost) {
+ super("Sword", damage, manaCost, "Melee", 100);
+ this.abilityCharge = 0;
+ }
- public Sword() {
- // TODO: DESIGN SWORD'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR
+ @Override
+ public void use(Entity target) {
+ super.use(target);
+ System.out.println("Sword attack dealt " + getDamage() + " damage!");
}
- // TODO: (BONUS) UPDATE THE UNIQUE ABILITY
public void uniqueAbility(ArrayList targets) {
abilityCharge += 2;
for (Entity target : targets) {
target.takeDamage(getDamage());
+ System.out.println("Sword's unique ability dealt " + getDamage() + " damage to " + target.getClass().getSimpleName());
}
}
+
+ public int getAbilityCharge() {
+ return abilityCharge;
+ }
+
+ public String getWeaponType() {
+ return "Melee Sword";
+ }
+
+ public void rechargeAbility() {
+ abilityCharge = 0;
+ System.out.println("Sword's ability is fully recharged.");
+ }
}
diff --git a/Java-Ring/src/main/java/org/project/object/weapons/Weapon.java b/Java-Ring/src/main/java/org/project/object/weapons/Weapon.java
index 35e1ecc..9c0a564 100644
--- a/Java-Ring/src/main/java/org/project/object/weapons/Weapon.java
+++ b/Java-Ring/src/main/java/org/project/object/weapons/Weapon.java
@@ -2,23 +2,27 @@
import org.project.entity.Entity;
-// TODO: UPDATE IMPLEMENTATION
public abstract class Weapon {
+ private String name;
private int damage;
private int manaCost;
+ private String weaponType;
+ private int durability;
- /*
- TODO: ADD OTHER REQUIRED AND BONUS ATTRIBUTES
- */
-
- public Weapon(int damage, int manaCost) {
+ public Weapon(String name, int damage, int manaCost, String weaponType, int durability) {
+ this.name = name;
this.damage = damage;
this.manaCost = manaCost;
+ this.weaponType = weaponType;
+ this.durability = durability;
}
- @Override
public void use(Entity target) {
target.takeDamage(damage);
+ durability--;
+ if (durability <= 0) {
+ System.out.println("Weapon " + name + " is broken!");
+ }
}
public int getDamage() {
@@ -29,7 +33,19 @@ public int getManaCost() {
return manaCost;
}
- /*
- TODO: ADD OTHER REQUIRED AND BONUS METHODS
- */
+ public String getName() {
+ return name;
+ }
+
+ public String getWeaponType() {
+ return weaponType;
+ }
+
+ public int getDurability() {
+ return durability;
+ }
+
+ public boolean isBroken() {
+ return durability <= 0;
+ }
}