diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 935cb4a..7f3d045 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -10,4 +10,9 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 4158879..4e0bf3c 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -16,5 +16,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Java-Knight/src/main/java/org/project/Main.java b/Java-Knight/src/main/java/org/project/Main.java
index 6bde20e..37f12b7 100644
--- a/Java-Knight/src/main/java/org/project/Main.java
+++ b/Java-Knight/src/main/java/org/project/Main.java
@@ -1,15 +1,185 @@
package org.project;
+import org.project.entity.enemies.*;
+import org.project.entity.players.Assassin;
+import org.project.entity.players.Knight;
+import org.project.entity.players.Player;
+import org.project.entity.players.Wizard;
+import org.project.item.armors.Armor;
+import org.project.item.armors.KnightArmor;
+import org.project.item.weapons.Sword;
+import org.project.item.weapons.Weapon;
import org.project.location.Location;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Scanner;
public class Main {
- public static void main(String[] args) {
- // TODO: ADD LOCATIONS TO YOUR GAME
- List locations = new ArrayList<>();
- // TODO: IMPLEMENT GAMEPLAY
+ public static void printBorder() {
+ for (int i = 0; i < 40; i++)
+ System.out.print("-");
+ System.out.println();
+ }
+
+ public static void printBorder(int x) {
+ for (int i = 0; i < 15; i++)
+ System.out.println();
+ for (int i = 0; i < x; i++)
+ System.out.print("-");
+ System.out.println();
+ }
+
+ public static int moveSelector() {
+ System.out.println("Choose your move:");
+ System.out.println("1. Light attack (Mana: 0) | 2. Normal attack (mana: 2) | 3. Heavy attack (mana: 3)");
+ System.out.println("4. Heal (5 mana) | 5. Skip");
+ Scanner in = new Scanner(System.in);
+ while (true) {
+ int answer = in.nextInt();
+ if (answer == 1 || answer == 2 || answer == 3 || answer == 4 || answer == 5)
+ return answer;
+ System.out.println("Invalid input try again.");
+ }
+ }
+
+ private static void fightEnemy(Player player, Location location, String enemyName, String locationDesc) {
+ String RED = "\u001B[31m";
+ String YELLOW = "\u001B[33m";
+ String RESET = "\u001B[0m";
+
+ System.out.printf("You're in the %s fighting a %s%s%s!\n", locationDesc, RED, enemyName, RESET);
+
+ while (player.isAlive() && location.getEnemy().getHP() > 0) {
+ // Player's turn: up to 5 actions
+ for (int i = 0; i < 5; i++) {
+ System.out.printf("%s | %sHP%s: %d, %sMP%s: %d\n",
+ player.getName(), RED, RESET, player.getHP(), YELLOW, RESET, player.getMP());
+ printBorder();
+ System.out.printf("%s | %sHP%s: %d, %sMP%s: %d\n",
+ enemyName, RED, RESET, location.getEnemy().getHP(), YELLOW, RESET, location.getEnemy().getMP());
+ System.out.println();
+
+ switch (moveSelector()) {
+ case 1: // Base Attack
+ location.getEnemy().takeDamage(player.getBaseDamage());
+ break;
+ case 2: // Normal Attack (2 mana)
+ if (player.useMana(2)) {
+ player.attack(location.getEnemy());
+ } else {
+ System.out.println("Not enough mana for Normal Attack!");
+ i--;
+ }
+ break;
+ case 3: // Heavy Attack (3 mana)
+ if (player.useMana(3)) {
+ player.heavyAttack(location.getEnemy());
+ } else {
+ System.out.println("Not enough mana for Heavy Attack!");
+ i--;
+ }
+ break;
+ case 4: // Heal (5 mana)
+ if (player.useMana(5)) {
+ player.heal(20);
+ } else {
+ System.out.println("Not enough mana to Heal!");
+ i--;
+ }
+ break;
+ }
+ printBorder();
+
+ // If enemy died or player died, end the player's turn early
+ if (location.getEnemy().getHP() <= 0 || !player.isAlive()) {
+ location.getEnemy().getKilled();
+ i = 5;
+ }
+ }
+
+ // Enemy's turn
+ if (location.getEnemy().getHP() > 0) {
+ for (int i = 0; i < 5; i++) {
+ location.getEnemy().attack(player);
+ printBorder();
+ if (!player.isAlive())
+ break;
+ }
+ }
+
+ // Restore mana after each full round
+ player.fillMana(6);
+ }
+ }
+
+ public static void main(String[] args) {
+ String RED = "\u001B[31m";
+ String YELLOW = "\u001B[33m";
+ String RESET = "\u001B[0m";
+ String GREEN = "\u001B[32m";
+
+ printBorder();
+ Scanner input = new Scanner(System.in);
+ System.out.println("Enter your name:");
+ String name = input.next();
+ printBorder();
+
+ Weapon sword = new Sword();
+ Armor armor = new KnightArmor();
+ Player player = null;
+
+ while (true) {
+ System.out.println("Chose your character:");
+ System.out.printf("1. Knight | %sHP%s: 100, %sMP%s: 10\n", RED, RESET, YELLOW, RESET);
+ System.out.printf("2. Wizard | %sHP%s: 150, %sMP%s: 10\n", RED, RESET, YELLOW, RESET);
+ System.out.printf("3. Assassin | %sHP%s: 80 , %sMP%s: 20\n", RED, RESET, YELLOW, RESET);
+ player = switch (input.nextInt()) {
+ case 1 -> new Knight(name, sword, armor);
+ case 2 -> new Wizard(name, sword, armor);
+ case 3 -> new Assassin(name, sword, armor);
+ default -> null;
+ };
+ if (player == null) {
+ System.out.println("Invalid input try again.");
+ } else
+ break;
+ }
+
+ Location overworld = new Location("Overworld", new Vampire(sword));
+ Location village = new Location("Village", new Goblin(sword));
+ Location nether = new Location("Nether", new Skeleton(sword));
+ Location end = new Location("End", new Dragon());
+
+ // Fight each enemy
+ fightEnemy(player, overworld, "Vampire", "Overworld");
+ if (!player.isAlive()) {
+ System.out.println("You lost!");
+ return;
+ }
+
+ fightEnemy(player, village, "Goblin", "Village");
+ if (!player.isAlive()) {
+ System.out.println("You lost!");
+ return;
+ }
+
+ fightEnemy(player, nether, "Skeleton", "Nether");
+ if (!player.isAlive()) {
+ System.out.println("You lost!");
+ return;
+ }
+ fightEnemy(player, end, "Dragon","End");
+ if (!player.isAlive()) {
+ System.out.println("You lost!");
+ return;
+ }
+ printBorder();
+ System.out.println(GREEN + " " + RESET);
+ System.out.println(RED + " VICTORY! " + RESET);
+ System.out.println(GREEN + " You have conquered all enemies! " + RESET);
+ System.out.println(GREEN + " The realm is safe, brave warrior. " + RESET);
+ System.out.println();
+ printBorder();
+
}
}
\ No newline at end of file
diff --git a/Java-Knight/src/main/java/org/project/entity/Entity.java b/Java-Knight/src/main/java/org/project/entity/Entity.java
index 2a060f9..63a2a6c 100644
--- a/Java-Knight/src/main/java/org/project/entity/Entity.java
+++ b/Java-Knight/src/main/java/org/project/entity/Entity.java
@@ -1,9 +1,8 @@
package org.project.entity;
public interface Entity {
- void attack(Entity target);
- void defend();
+ void attack(Entity target);
void heal(int health);
@@ -14,8 +13,4 @@ public interface Entity {
int getMaxHP();
int getMaxMP();
-
- /*
- TODO: ADD OTHER REQUIRED AND BONUS METHODS
- */
}
diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java
new file mode 100644
index 0000000..956da6f
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java
@@ -0,0 +1,60 @@
+package org.project.entity.enemies;
+
+import org.project.entity.Entity;
+import org.project.item.weapons.DragonBreath;
+import org.project.item.weapons.Weapon;
+
+public class Dragon extends Enemy{
+ public Dragon() {
+ int baseDamage = 2;
+ int hp = 500;
+ int mp = 1000;
+ Weapon weapon1 = new DragonBreath();
+ super(hp, mp, weapon1, baseDamage);
+ }
+
+ @Override
+ public void takeDamage(int damage) {
+ super.takeDamage(damage);
+ if(!isAlive)
+ getKilled();
+ }
+
+ @Override
+ public void getKilled() {
+ isAlive = false;
+ }
+
+ @Override
+ public void attack(Entity target) {
+ target.takeDamage((weapon.getDamage() + getBaseDamage()));
+ System.out.println("\u001B[31mDragon breathes a raging fire!\u001B[0m");
+ System.out.printf("\u001B[31mYou took %d damage.\u001B[0m\n", weapon.getDamage() + getBaseDamage());
+ }
+
+ @Override
+ public void heal(int health) {
+ if (getHP() + health > getMaxHP())
+ setHP(getMaxHP());
+ else
+ setHP(getHP()+ health);
+ }
+
+ @Override
+ public void fillMana(int mana) {
+ if (getMP() + mana > getMaxMP())
+ setMP(getMaxMP());
+ else
+ setMP(getMP()+ mana);
+ }
+
+ @Override
+ public int getMaxHP() {
+ return 500;
+ }
+
+ @Override
+ public int getMaxMP() {
+ return 1000;
+ }
+}
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 e019acb..190afca 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
@@ -1,34 +1,58 @@
package org.project.entity.enemies;
+import org.project.entity.Entity;
import org.project.item.weapons.Weapon;
-// TODO: UPDATE IMPLEMENTATION
-public abstract class Enemy {
+public abstract class Enemy implements Entity {
Weapon weapon;
+ boolean isAlive;
private int hp;
private int mp;
+ private int baseDamage;
- public Enemy(int hp, int mp, Weapon weapon) {
+ public Enemy(int hp, int mp, Weapon weapon, int baseDamage) {
+ this.baseDamage = baseDamage;
+ isAlive = true;
this.hp = hp;
this.mp = mp;
-
this.weapon = weapon;
}
+ public void setHP(int hp) {
+ this.hp = hp;
+ }
+
+ public void setMP(int mp) {
+ this.mp = mp;
+ }
+
@Override
public void takeDamage(int damage) {
+ if (0 >= (hp - damage)) {
+ isAlive = false;
+ hp = 0;
+ System.out.println("\u001B[32myou killed your enemy\u001B[0m");
+ return;
+ }
hp -= damage;
+ System.out.printf("\u001B[31mEnemy took %d damage.\u001B[0m\n", damage);
}
- public int getHp() {
+ public abstract void getKilled();
+
+ public int getHP() {
return hp;
}
- public int getMp() {
+ public int getMP() {
return mp;
}
+ public int getBaseDamage() {
+ return baseDamage;
+ }
+
public Weapon getWeapon() {
return weapon;
}
-}
+}
\ No newline at end of file
diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java b/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java
new file mode 100644
index 0000000..0c13a35
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java
@@ -0,0 +1,57 @@
+package org.project.entity.enemies;
+
+import org.project.entity.Entity;
+import org.project.item.weapons.Weapon;
+import java.util.Random;
+
+public class Goblin extends Enemy {
+ public Goblin(Weapon weapon) {
+ int hp = 30;
+ int mp = 50;
+ super(hp, mp, weapon, 10);
+ }
+
+ @Override
+ public void getKilled() {
+ isAlive = false;
+ }
+
+ @Override
+ public void attack(Entity target) {
+ Random rand = new Random();
+ if (rand.nextBoolean()) {
+ target.takeDamage((weapon.getDamage() + getBaseDamage()) * 2);
+ System.out.println("\u001B[33mGoblin did critical Hit!!!!!\u001B[0m");
+ System.out.printf("\u001B[31mYou took %d damage.\u001B[0m\n", (weapon.getDamage() + getBaseDamage()) * 2);
+ } else {
+ target.takeDamage(weapon.getDamage() + getBaseDamage());
+ System.out.printf("\u001B[31mYou took %d damage.\u001B[0m\n", weapon.getDamage() + getBaseDamage());
+ }
+ }
+
+ @Override
+ public void heal(int health) {
+ if (getHP() + health > getMaxHP())
+ setHP(getMaxHP());
+ else
+ setHP(getHP() + health);
+ }
+
+ @Override
+ public void fillMana(int mana) {
+ if (getMP() + mana > getMaxMP())
+ setMP(getMaxMP());
+ else
+ setMP(getMP() + mana);
+ }
+
+ @Override
+ public int getMaxHP() {
+ return 30;
+ }
+
+ @Override
+ public int getMaxMP() {
+ return 50;
+ }
+}
\ No newline at end of file
diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java b/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java
index 8a6a555..a60c6d9 100644
--- a/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java
+++ b/Java-Knight/src/main/java/org/project/entity/enemies/Skeleton.java
@@ -1,6 +1,65 @@
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 {
+ int timesDied;
+
+ public Skeleton(Weapon weapon) {
+ int hp = 50;
+ int mp = 50;
+ timesDied = 0;
+ super(hp, mp, weapon, 10);
+ }
+
+ @Override
+ public void takeDamage(int damage) {
+ super.takeDamage(damage);
+ if (!isAlive)
+ getKilled();
+ }
+
+ @Override
+ public void getKilled() {
+ if (timesDied == 0) {
+ timesDied += 1;
+ setHP(getMaxHP() / 2);
+ System.out.println("\u001B[33myour enemy revived itself!!!\u001B[0m");
+ return;
+ }
+ isAlive = false;
+ }
+
+ @Override
+ public void attack(Entity target) {
+ target.takeDamage((weapon.getDamage() + getBaseDamage()));
+ System.out.printf("\u001B[31mYou took %d damage.\u001B[0m\n", weapon.getDamage() + getBaseDamage());
+ }
+
+ @Override
+ public void heal(int health) {
+ if (getHP() + health > getMaxHP())
+ setHP(getMaxHP());
+ else
+ setHP(getHP() + health);
+ }
+
+ @Override
+ public void fillMana(int mana) {
+ if (getMP() + mana > getMaxMP())
+ setMP(getMaxMP());
+ else
+ setMP(getMP() + mana);
+ }
+
+ @Override
+ public int getMaxHP() {
+ return 50;
+ }
+
+ @Override
+ public int getMaxMP() {
+ return 50;
+ }
+}
\ No newline at end of file
diff --git a/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java b/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java
new file mode 100644
index 0000000..4eb0ec7
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java
@@ -0,0 +1,52 @@
+package org.project.entity.enemies;
+
+import org.project.entity.Entity;
+import org.project.item.weapons.Weapon;
+
+public class Vampire extends Enemy {
+ public Vampire(Weapon weapon) {
+ int maxHP = 50;
+ int maxMP = 50;
+ super(maxHP, maxMP, weapon, 8);
+ }
+
+ @Override
+ public void getKilled() {
+ isAlive = false;
+ }
+
+ @Override
+ public void attack(Entity target) {
+ target.takeDamage((weapon.getDamage() + getBaseDamage()));
+ System.out.println("\u001B[35mVampire stole your HP\u001B[0m");
+ System.out.printf("\u001B[32mVampire: +%d hp\u001B[0m\n", (int) ((weapon.getDamage() + getBaseDamage()) * 0.5));
+ this.heal((int) ((weapon.getDamage() + getBaseDamage()) * 0.5));
+ System.out.printf("\u001B[31mYou took %d damage.\u001B[0m\n", (int) (weapon.getDamage() + getBaseDamage()));
+ }
+
+ @Override
+ public void heal(int health) {
+ if (getHP() + health > getMaxHP())
+ setHP(getMaxHP());
+ else
+ setHP(getHP() + health);
+ }
+
+ @Override
+ public void fillMana(int mana) {
+ if (getMP() + mana > getMaxMP())
+ setMP(getMaxMP());
+ else
+ setMP(getMP() + mana);
+ }
+
+ @Override
+ public int getMaxHP() {
+ return 50;
+ }
+
+ @Override
+ public int getMaxMP() {
+ return 50;
+ }
+}
\ No newline at end of file
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..3be8871
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java
@@ -0,0 +1,14 @@
+package org.project.entity.players;
+
+import org.project.item.armors.Armor;
+import org.project.item.weapons.Weapon;
+
+public class Assassin extends Player{
+
+ public Assassin(String name, Weapon weapon, Armor armor) {
+ int hp = 80;
+ int mp = 20;
+ int baseDamage = 5;
+ super(name, hp, mp, baseDamage, weapon, armor);
+ }
+}
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 14d8fa2..eca6ac4 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
@@ -1,6 +1,14 @@
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.item.armors.Armor;
+import org.project.item.weapons.Weapon;
+
+public class Knight extends Player {
+
+ public Knight(String name, Weapon weapon, Armor armor) {
+ int hp = 100;
+ int mp = 10;
+ int baseDamage = 10;
+ super(name, hp, mp, baseDamage, weapon, armor);
+ }
}
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 ff5385c..0e0fcf6 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
@@ -4,8 +4,7 @@ import org.project.entity.Entity;
import org.project.item.armors.Armor;
import org.project.item.weapons.Weapon;
-// TODO: UPDATE IMPLEMENTATION
-public abstract class Player {
+public abstract class Player implements Entity {
protected String name;
Weapon weapon;
Armor armor;
@@ -13,30 +12,42 @@ public abstract class Player {
private int maxHP;
private int mp;
private int maxMP;
+ private int baseDamage;
+ private boolean isAlive;
- public Player(String name, int hp, int mp, Weapon weapon, Armor armor) {
+ public int getBaseDamage() {
+ return baseDamage;
+ }
+
+ public Player(String name, int hp, int mp, int baseDamage, Weapon weapon, Armor armor) {
this.name = name;
this.hp = hp;
this.mp = mp;
-
+ this.maxHP = hp;
+ this.maxMP = mp;
+ this.baseDamage = baseDamage;
this.weapon = weapon;
this.armor = armor;
+ this.isAlive = true;
}
@Override
public void attack(Entity target) {
- target.takeDamage(weapon.getDamage());
+ target.takeDamage(weapon.getDamage() + this.baseDamage);
}
- @Override
- public void defend() {
- // TODO
+ public void heavyAttack(Entity target) {
+ target.takeDamage(weapon.getDamage() + this.baseDamage + 7);
}
-
@Override
public void takeDamage(int damage) {
- hp -= damage - armor.getDefense();
+ if (damage - armor.getDefense() > 0) {
+ hp -= damage - armor.getDefense();
+ if (hp <= 0) {
+ getKilled();
+ }
+ }
}
@Override
@@ -45,6 +56,7 @@ public abstract class Player {
if (hp > maxHP) {
hp = maxHP;
}
+ System.out.println("\u001B[32myou Healed yourself!\u001B[0m");
}
@Override
@@ -52,15 +64,16 @@ public abstract class Player {
mp += mana;
if (mp > maxMP) {
mp = maxMP;
- }
+ System.out.println("\u001B[33myour Mana got spilled.\u001B[0m");
+ } else
+ System.out.printf("\u001B[36m+%d Mana\u001B[0m\n", mana);
}
-
public String getName() {
return name;
}
- public int getHp() {
+ public int getHP() {
return hp;
}
@@ -69,7 +82,7 @@ public abstract class Player {
return maxHP;
}
- public int getMp() {
+ public int getMP() {
return mp;
}
@@ -86,4 +99,21 @@ public abstract class Player {
return armor;
}
-}
+ public boolean isAlive() {
+ return isAlive;
+ }
+
+ public void getKilled() {
+ isAlive = false;
+ System.out.println("\u001B[31mYou died!\u001B[0m");
+ }
+
+ public boolean useMana(int mana) {
+ if (mp - mana < 0)
+ return false;
+ else {
+ mp -= mana;
+ return true;
+ }
+ }
+}
\ No newline at end of file
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..612ecec
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java
@@ -0,0 +1,13 @@
+package org.project.entity.players;
+
+import org.project.item.armors.Armor;
+import org.project.item.weapons.Weapon;
+
+public class Wizard extends Player{
+ public Wizard(String name, Weapon weapon, Armor armor) {
+ int hp = 150;
+ int mp = 10;
+ int baseDamage = 4;
+ super(name, hp, mp, baseDamage, weapon, armor);
+ }
+}
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..f4422ab 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,9 @@
package org.project.item.armors;
-// TODO: UPDATE IMPLEMENTATION
-public class KnightArmor {
- // TODO: DESIGN ARMOR'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR
+public class KnightArmor extends Armor{
+ public KnightArmor() {
+ int defense = 6;
+ int durability = 20;
+ super(defense, durability);
+ }
}
\ No newline at end of file
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 028e13d..e9e232f 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
@@ -1,7 +1,9 @@
package org.project.item.consumables;
+import org.project.item.Item;
+
// TODO: UPDATE IMPLEMENTATION
-public abstract class Consumable {
+public abstract class Consumable implements Item {
/*
TODO: ADD OTHER REQUIRED AND BONUS METHODS
*/
diff --git a/Java-Knight/src/main/java/org/project/item/consumables/Flask.java b/Java-Knight/src/main/java/org/project/item/consumables/Flask.java
index c0e7a6d..31ff348 100644
--- a/Java-Knight/src/main/java/org/project/item/consumables/Flask.java
+++ b/Java-Knight/src/main/java/org/project/item/consumables/Flask.java
@@ -3,7 +3,7 @@ package org.project.item.consumables;
import org.project.entity.Entity;
// TODO: UPDATE IMPLEMENTATION
-public class Flask {
+public class Flask extends Consumable{
/*
THIS IS AN EXAMPLE OF A CONSUMABLE DESIGN.
*/
diff --git a/Java-Knight/src/main/java/org/project/item/weapons/DragonBreath.java b/Java-Knight/src/main/java/org/project/item/weapons/DragonBreath.java
new file mode 100644
index 0000000..d4d556a
--- /dev/null
+++ b/Java-Knight/src/main/java/org/project/item/weapons/DragonBreath.java
@@ -0,0 +1,7 @@
+package org.project.item.weapons;
+
+public class DragonBreath extends Weapon{
+ public DragonBreath() {
+ super(8, 0);
+ }
+}
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 96226ee..d0bed59 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
@@ -5,7 +5,7 @@ import org.project.entity.Entity;
import java.util.ArrayList;
// TODO: UPDATE IMPLEMENTATION
-public class Sword {
+public class Sword extends Weapon{
/*
THIS IS AN EXAMPLE OF A WEAPON DESIGN.
*/
@@ -13,7 +13,9 @@ public class Sword {
int abilityCharge;
public Sword() {
- // TODO: DESIGN SWORD'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR
+ int damage = 2;
+ int manaCost = 10;
+ super(damage, manaCost);
}
// TODO: (BONUS) UPDATE THE UNIQUE ABILITY
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 cb9fcf2..0b54340 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
@@ -1,9 +1,10 @@
package org.project.item.weapons;
import org.project.entity.Entity;
+import org.project.item.Item;
// TODO: UPDATE IMPLEMENTATION
-public abstract class Weapon {
+public abstract class Weapon implements Item {
private int damage;
private int 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 b0b4b98..8239f98 100644
--- a/Java-Knight/src/main/java/org/project/location/Location.java
+++ b/Java-Knight/src/main/java/org/project/location/Location.java
@@ -2,27 +2,20 @@ package org.project.location;
import org.project.entity.enemies.Enemy;
-import java.util.ArrayList;
-
public class Location {
private String name;
+ private Enemy enemiy;
- private ArrayList enemies;
-
- public Location(ArrayList locations, ArrayList enemies) {
- this.locations = locations;
- this.enemies = enemies;
+ public Location(String name,Enemy enemiy) {
+ this.enemiy = enemiy;
+ this.name = name;
}
public String getName() {
return name;
}
- public ArrayList getLocations() {
- return locations;
- }
-
- public ArrayList getEnemies() {
- return enemies;
+ public Enemy getEnemy() {
+ return enemiy;
}
}
diff --git a/Java-Knight/target/classes/org/project/Main.class b/Java-Knight/target/classes/org/project/Main.class
new file mode 100644
index 0000000..d2572c6
Binary files /dev/null and b/Java-Knight/target/classes/org/project/Main.class differ
diff --git a/Java-Knight/target/classes/org/project/entity/Entity.class b/Java-Knight/target/classes/org/project/entity/Entity.class
new file mode 100644
index 0000000..04b6b10
Binary files /dev/null and b/Java-Knight/target/classes/org/project/entity/Entity.class differ
diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Dragon.class b/Java-Knight/target/classes/org/project/entity/enemies/Dragon.class
new file mode 100644
index 0000000..d3e2646
Binary files /dev/null and b/Java-Knight/target/classes/org/project/entity/enemies/Dragon.class differ
diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class b/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class
new file mode 100644
index 0000000..65b8894
Binary files /dev/null and b/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class differ
diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class b/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class
new file mode 100644
index 0000000..71d4743
Binary files /dev/null and b/Java-Knight/target/classes/org/project/entity/enemies/Goblin.class differ
diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class b/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class
new file mode 100644
index 0000000..101099e
Binary files /dev/null and b/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class differ
diff --git a/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class b/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class
new file mode 100644
index 0000000..ba0fcdb
Binary files /dev/null and b/Java-Knight/target/classes/org/project/entity/enemies/Vampire.class differ
diff --git a/Java-Knight/target/classes/org/project/entity/players/Assassin.class b/Java-Knight/target/classes/org/project/entity/players/Assassin.class
new file mode 100644
index 0000000..4548756
Binary files /dev/null and b/Java-Knight/target/classes/org/project/entity/players/Assassin.class differ
diff --git a/Java-Knight/target/classes/org/project/entity/players/Knight.class b/Java-Knight/target/classes/org/project/entity/players/Knight.class
new file mode 100644
index 0000000..ecf0228
Binary files /dev/null and b/Java-Knight/target/classes/org/project/entity/players/Knight.class differ
diff --git a/Java-Knight/target/classes/org/project/entity/players/Player.class b/Java-Knight/target/classes/org/project/entity/players/Player.class
new file mode 100644
index 0000000..f97c4ba
Binary files /dev/null and b/Java-Knight/target/classes/org/project/entity/players/Player.class differ
diff --git a/Java-Knight/target/classes/org/project/entity/players/Wizard.class b/Java-Knight/target/classes/org/project/entity/players/Wizard.class
new file mode 100644
index 0000000..f85c43e
Binary files /dev/null and b/Java-Knight/target/classes/org/project/entity/players/Wizard.class differ
diff --git a/Java-Knight/target/classes/org/project/item/Item.class b/Java-Knight/target/classes/org/project/item/Item.class
new file mode 100644
index 0000000..3db1242
Binary files /dev/null and b/Java-Knight/target/classes/org/project/item/Item.class differ
diff --git a/Java-Knight/target/classes/org/project/item/armors/Armor.class b/Java-Knight/target/classes/org/project/item/armors/Armor.class
new file mode 100644
index 0000000..b9768d9
Binary files /dev/null and b/Java-Knight/target/classes/org/project/item/armors/Armor.class differ
diff --git a/Java-Knight/target/classes/org/project/item/armors/KnightArmor.class b/Java-Knight/target/classes/org/project/item/armors/KnightArmor.class
new file mode 100644
index 0000000..c74e05a
Binary files /dev/null and b/Java-Knight/target/classes/org/project/item/armors/KnightArmor.class differ
diff --git a/Java-Knight/target/classes/org/project/item/consumables/Consumable.class b/Java-Knight/target/classes/org/project/item/consumables/Consumable.class
new file mode 100644
index 0000000..17c7d2f
Binary files /dev/null and b/Java-Knight/target/classes/org/project/item/consumables/Consumable.class differ
diff --git a/Java-Knight/target/classes/org/project/item/consumables/Flask.class b/Java-Knight/target/classes/org/project/item/consumables/Flask.class
new file mode 100644
index 0000000..c0dfc59
Binary files /dev/null and b/Java-Knight/target/classes/org/project/item/consumables/Flask.class differ
diff --git a/Java-Knight/target/classes/org/project/item/weapons/DragonBreath.class b/Java-Knight/target/classes/org/project/item/weapons/DragonBreath.class
new file mode 100644
index 0000000..710127d
Binary files /dev/null and b/Java-Knight/target/classes/org/project/item/weapons/DragonBreath.class differ
diff --git a/Java-Knight/target/classes/org/project/item/weapons/Sword.class b/Java-Knight/target/classes/org/project/item/weapons/Sword.class
new file mode 100644
index 0000000..fb7097e
Binary files /dev/null and b/Java-Knight/target/classes/org/project/item/weapons/Sword.class differ
diff --git a/Java-Knight/target/classes/org/project/item/weapons/Weapon.class b/Java-Knight/target/classes/org/project/item/weapons/Weapon.class
new file mode 100644
index 0000000..5ee77ce
Binary files /dev/null and b/Java-Knight/target/classes/org/project/item/weapons/Weapon.class differ
diff --git a/Java-Knight/target/classes/org/project/location/Location.class b/Java-Knight/target/classes/org/project/location/Location.class
new file mode 100644
index 0000000..37a85cf
Binary files /dev/null and b/Java-Knight/target/classes/org/project/location/Location.class differ