update enemies project
This commit is contained in:
@@ -9,32 +9,18 @@ import org.project.item.weapons.Weapon;
|
||||
public abstract class Enemy implements Entity {
|
||||
Weapon weapon;
|
||||
private int hp;
|
||||
private int maxHP;
|
||||
private int mp;
|
||||
private int maxMP;
|
||||
private boolean defending = false;
|
||||
private double defendRate;
|
||||
|
||||
public Enemy(int hp, int mp, Weapon weapon) {
|
||||
this.hp = hp;
|
||||
this.mp = mp;
|
||||
|
||||
this.weapon = weapon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void takeDamage(int damage) {
|
||||
hp -= damage;
|
||||
}
|
||||
|
||||
public int getHp() {
|
||||
return hp;
|
||||
}
|
||||
|
||||
public int getMp() {
|
||||
return mp;
|
||||
}
|
||||
|
||||
public Weapon getWeapon() {
|
||||
return weapon;
|
||||
}
|
||||
|
||||
//implement this in Main
|
||||
private boolean checkTargetAbility(Player target) {
|
||||
if (target instanceof Knight) {
|
||||
boolean check = target.getUsingSpecialAbility();
|
||||
@@ -42,5 +28,101 @@ public abstract class Enemy implements Entity {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target, double multiplier) {
|
||||
if (checkTargetAbility((Player) target)){
|
||||
System.out.println("target is using special ability");
|
||||
return;
|
||||
}
|
||||
double damage = multiplier * weapon.getDamage();
|
||||
if (target.isDefending()) {
|
||||
target.takeDamage( (int) (damage * (1 - target.getDefendRate())));
|
||||
target.setDefending(false);
|
||||
}
|
||||
else {
|
||||
target.takeDamage((int) damage);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void defend(){
|
||||
setDefending(true);
|
||||
};
|
||||
|
||||
@Override
|
||||
public void heal(int health) {
|
||||
setHP(getHP() + health);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void takeDamage(int damage) {
|
||||
setHP(getHP() - damage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHP() {
|
||||
return hp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHP(int hp) {
|
||||
this.hp = hp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxHP() {
|
||||
return maxHP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaxHP(int maxHP) {
|
||||
this.maxHP = maxHP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMP() {
|
||||
return mp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMP(int mp) {
|
||||
this.mp = mp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxMP() {
|
||||
return maxMP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaxMP(int maxMP) {
|
||||
this.maxMP = maxMP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDefending() {
|
||||
return defending;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDefending(boolean defending) {
|
||||
this.defending = defending;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDefendRate() {
|
||||
return defendRate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDefendRate(double defendRate) {
|
||||
this.defendRate = defendRate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Weapon getWeapon() {
|
||||
return weapon;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package org.project.entity.enemies;
|
||||
|
||||
import org.project.entity.Entity;
|
||||
import org.project.item.weapons.Weapon;
|
||||
|
||||
public class Goblin extends Enemy{
|
||||
public Goblin(int hp, int mp, Weapon weapon) {
|
||||
super(hp,mp,weapon);
|
||||
setDefendRate(.5);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target, double multiplier) {
|
||||
if (getMP() > 5) {
|
||||
super.attack(target,2);
|
||||
setMP(getMP() - 5);
|
||||
}
|
||||
else {
|
||||
System.out.println("Not enough MP");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void defend() {
|
||||
if (getMP() >= 5) {
|
||||
super.defend();
|
||||
setMP(getMP() - 5);
|
||||
}
|
||||
else {
|
||||
System.out.println("Not enough MP");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void heal(int health) {
|
||||
if (getMP() >= 6) {
|
||||
super.heal(health);
|
||||
setMP(getMP() - 6);
|
||||
}
|
||||
else {
|
||||
System.out.println("Not enough MP");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,56 @@
|
||||
package org.project.entity.enemies;
|
||||
|
||||
// TODO: UPDATE IMPLEMENTATION
|
||||
public class Skeleton {
|
||||
// TODO: DESIGN ENEMY AND IMPLEMENT THE CONSTRUCTOR
|
||||
|
||||
import org.project.entity.Entity;
|
||||
import org.project.item.weapons.Weapon;
|
||||
|
||||
public class Skeleton extends Enemy{
|
||||
|
||||
public Skeleton(int hp, int mp, Weapon weapon) {
|
||||
super(hp,mp,weapon);
|
||||
setDefendRate(.3);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target, double multiplier) {
|
||||
if (getMP() > 5) {
|
||||
super.attack(target,1);
|
||||
setMP(getMP() - 5);
|
||||
}
|
||||
else {
|
||||
System.out.println("Not enough MP");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void defend() {
|
||||
if (getMP() >= 3) {
|
||||
super.defend();
|
||||
setMP(getMP() - 3);
|
||||
}
|
||||
else {
|
||||
System.out.println("Not enough MP");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void heal(int health) {
|
||||
if (getMP() >= 6) {
|
||||
super.heal(health);
|
||||
setMP(getMP() - 6);
|
||||
}
|
||||
else {
|
||||
System.out.println("Not enough MP");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void takeDamage(int damage) {
|
||||
super.takeDamage(damage);
|
||||
if (getHP() <= 0) {
|
||||
setHP(getMaxHP() / 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package org.project.entity.enemies;
|
||||
|
||||
import org.project.entity.Entity;
|
||||
import org.project.item.weapons.Weapon;
|
||||
|
||||
public class Vampire extends Enemy{
|
||||
|
||||
public Vampire(int hp, int mp, Weapon weapon) {
|
||||
super(hp,mp,weapon);
|
||||
setDefendRate(.7);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attack(Entity target, double multiplier) {
|
||||
if (getMP() > 5) {
|
||||
super.attack(target,1.5);
|
||||
setMP(getMP() - 5);
|
||||
}
|
||||
else {
|
||||
System.out.println("Not enough MP");
|
||||
}
|
||||
|
||||
double damage = weapon.getDamage() * multiplier;
|
||||
if (target.isDefending()) {
|
||||
heal( (int) (.3 * (damage * (1 - target.getDefendRate()))));
|
||||
}
|
||||
else {
|
||||
heal( (int) (.3 * damage));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void defend() {
|
||||
if (getMP() >= 3) {
|
||||
super.defend();
|
||||
setMP(getMP() - 3);
|
||||
}
|
||||
else {
|
||||
System.out.println("Not enough MP");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void heal(int health) {
|
||||
if (getMP() >= 6) {
|
||||
super.heal(health);
|
||||
setMP(getMP() - 6);
|
||||
}
|
||||
else {
|
||||
System.out.println("Not enough MP");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ public abstract class Player implements Entity, combatOptions {
|
||||
public void attack(Entity target, double multiplier) {
|
||||
double damage = multiplier * weapon.getDamage();
|
||||
if (target.isDefending()) {
|
||||
target.takeDamage( (int) (damage * (1 - getDefendRate())));
|
||||
target.takeDamage( (int) (damage * (1 - target.getDefendRate())));
|
||||
target.setDefending(false);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -20,7 +20,7 @@ public class Sword {
|
||||
public void uniqueAbility(ArrayList<Entity> targets) {
|
||||
abilityCharge += 2;
|
||||
for (Entity target : targets) {
|
||||
target.takeDamage(getDamage());
|
||||
target.takeDamage(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user