From 2bfb6a891cc7fa807314ca5e062e5122bac1f477 Mon Sep 17 00:00:00 2001 From: HadiSharifi Date: Sun, 3 May 2026 17:11:01 +0330 Subject: [PATCH] add Wizard and Assassin class --- .../org/project/entity/players/Assassin.java | 67 +++++++++++++++++++ .../org/project/entity/players/Player.java | 7 ++ .../org/project/entity/players/Wizard.java | 63 +++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 Java-Knight/src/main/java/org/project/entity/players/Assassin.java create mode 100644 Java-Knight/src/main/java/org/project/entity/players/Wizard.java 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 new file mode 100644 index 0000000..fea6225 --- /dev/null +++ b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java @@ -0,0 +1,67 @@ +package org.project.entity.players; + + +import org.project.entity.Entity; +import org.project.item.armors.Armor; +import org.project.item.weapons.Weapon; + +public class Assassin extends Player { + + public Assassin(String name, int hp, int mp, Weapon weapon, Armor armor) { + super(name, hp, mp, weapon, armor); + setDefendRate(.7); + } + + @Override + public void lightAttack(Entity target) { + attack(target, 1); + } + + @Override + public void heavyAttack(Entity target) { + if (getMp() >= 8) { + attack(target, 2.5); + setMp(getMp() - 8); + } + else { + System.out.println("Not enough MP"); + } + } + + @Override + public void defend() { + if (getMp() >= 4) { + super.defend(); + setMp(getMp() - 4); + } + else { + System.out.println("Not enough MP"); + } + } + + @Override + public void specialAbility(Entity target) { + if (getMp() >= 20) { + setDefendRate(1); + defend(); + setMp(getMp() - 20); + //incomplete + } + else { + System.out.println("Not enough MP"); + } + } + + @Override + public void heal(int health) { + if (getMp() >= 5) { + super.heal(health); + setMp(getMp() - 5); + } + else { + System.out.println("Not enough MP"); + } + } + +} + 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 2e1e976..2783b47 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 @@ -82,6 +82,13 @@ public abstract class Player implements Entity, combatOptions { return hp; } + public void fillHp(int hp) { + this.hp += hp; + if (this.hp > maxHP) { + this.hp = maxHP; + } + } + @Override public int getMaxHP() { return maxHP; 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 new file mode 100644 index 0000000..b536c1b --- /dev/null +++ b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java @@ -0,0 +1,63 @@ +package org.project.entity.players; + +import org.project.entity.Entity; +import org.project.item.armors.Armor; +import org.project.item.weapons.Weapon; + +public class Wizard extends Player{ + + public Wizard(String name, int hp, int mp, Weapon weapon, Armor armor) { + super(name,hp,mp,weapon,armor); + setDefendRate(.6); + } + + @Override + public void lightAttack(Entity target) { + attack(target, 1); + } + + @Override + public void heavyAttack(Entity target) { + if (getMp() >= 5) { + attack(target, 1.6); + setMp(getMp() - 5); + } + else { + System.out.println("Not enough MP"); + } + } + + @Override + public void defend() { + if (getMp() >= 4) { + super.defend(); + setMp(getMp() - 4); + } + else { + System.out.println("Not enough MP"); + } + } + + @Override + public void specialAbility(Entity target) { + if (getMp() >= 20) { + attack(target, 2); + setMp(getMp() - 20); + fillHp(10); + } + else { + System.out.println("Not enough MP"); + } + } + + @Override + public void heal(int health) { + if (getMp() >= 5) { + super.heal(health); + setMp(getMp() - 5); + } + else { + System.out.println("Not enough MP"); + } + } +}