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..f72cfce 100644
--- a/Java-Knight/src/main/java/org/project/Main.java
+++ b/Java-Knight/src/main/java/org/project/Main.java
@@ -9,7 +9,21 @@ public class Main {
public static void main(String[] args) {
// TODO: ADD LOCATIONS TO YOUR GAME
List locations = new ArrayList<>();
+ Location forest = new Location("Forest");
+ Location cave = new Location("Cave");
+
+ forest.addLocation(cave);
+ cave.addLocation(forest);
+
+ locations.add(forest);
+ locations.add(cave);
// TODO: IMPLEMENT GAMEPLAY
+ System.out.println("Game started!");
+ System.out.println("Locations created: ");
+
+ for (Location loc : locations) {
+ System.out.println("- " + loc.getName());
+ }
}
}
\ No newline at end of file
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..0007438 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,33 +1,53 @@
package org.project.entity.enemies;
+import org.project.entity.Entity;
import org.project.item.weapons.Weapon;
// TODO: UPDATE IMPLEMENTATION
-public abstract class Enemy {
- Weapon weapon;
+public abstract class Enemy implements Entity {
+ protected Weapon weapon;
+
private int hp;
+ private int maxHP;
+
private int mp;
+ private int maxMP;
public Enemy(int hp, int mp, Weapon weapon) {
this.hp = hp;
+ this.maxHP= hp;
+
this.mp = mp;
+ this.maxMP= mp;
this.weapon = weapon;
}
@Override
public void takeDamage(int damage) {
- hp -= damage;
- }
+ hp -= damage;
+ if (hp < 0) hp = 0;
+ }
+ @Override
+ public void heal(int health){
+ hp+= health;
+ if (hp>maxHP){
+ hp=maxHP;
+ }
+ }
public int getHp() {
return hp;
}
-
+ public int getMaxHP(){
+ return maxHP;
+ }
public int getMp() {
return mp;
}
-
+ public int getMaxMP(){
+ return maxMP;
+ }
public Weapon getWeapon() {
return weapon;
}
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..0baa390 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,51 @@
package org.project.entity.enemies;
+import org.project.entity.Entity;
+
// TODO: UPDATE IMPLEMENTATION
-public class Skeleton {
- // TODO: DESIGN ENEMY AND IMPLEMENT THE CONSTRUCTOR
-}
+public class Skeleton extends Enemy {
+
+ private boolean hasRevived;
+
+ public Skeleton() {
+
+ super(
+ 80,
+ 30,
+ null
+ );
+
+ this.hasRevived = false;
+ }
+
+ @Override
+ public void attack(Entity target) {
+
+ }
+
+ @Override
+ public void defend() {
+
+ }
+
+ @Override
+ public void fillMana(int mana) {
+
+ }
+
+ // Skeleton revive ability (once per battle)
+ @Override
+ public void takeDamage(int damage) {
+
+ super.takeDamage(damage);
+
+ if (getHp() <= 0 && !hasRevived) {
+
+ hasRevived = true;
+
+ System.out.println("Skeleton revived!");
+
+ heal(getMaxHP() / 2);
+ }
+ }
+}
\ No newline at end of file
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..39c292f 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,22 @@
package org.project.entity.players;
+import org.project.item.armors.Armor;
+import org.project.item.armors.KnightArmor;
+import org.project.item.weapons.Sword;
+import org.project.item.weapons.Weapon;
+
// TODO: UPDATE IMPLEMENTATION
-public class Knight {
- // TODO: DESIGN KNIGHT'S WEAPON AND ARMOR AND IMPLEMENT THE CONSTRUCTOR
+
+ public class Knight extends Player{
+ // TODO: DESIGN KNIGHT'S WEAPON AND ARMOR AND IMPLEMENT THE CONSTRUCTOR
+ public Knight(String name) {
+ super(
+ name,
+ 120,
+ 60,
+ new Sword(),
+ new KnightArmor()
+ );
+ }
+
}
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..8fbbc78 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
@@ -5,7 +5,7 @@ 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;
@@ -18,7 +18,7 @@ public abstract class Player {
this.name = name;
this.hp = hp;
this.mp = mp;
-
+ this.maxMP = mp;
this.weapon = weapon;
this.armor = armor;
}
@@ -31,6 +31,7 @@ public abstract class Player {
@Override
public void defend() {
// TODO
+ System.out.println(name+ "is defending!");
}
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..ad0a835 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
@@ -2,8 +2,10 @@ package org.project.item.armors;
// TODO: UPDATE IMPLEMENTATION
public abstract class Armor {
+
private int defense;
private int maxDefense;
+
private int durability;
private int maxDurability;
@@ -11,7 +13,12 @@ public abstract class Armor {
public Armor(int defense, int durability) {
this.defense = defense;
+ this.maxDefense = defense;
+
this.durability = durability;
+ this.maxDurability =durability;
+
+ this.isBroke=false;
}
public void checkBreak() {
@@ -23,9 +30,15 @@ public abstract class Armor {
// TODO: (BONUS) UPDATE THE REPAIR METHOD
public void repair() {
+ if (!isBroke){
+ System.out.println("Armor is not broken.");
+ return;
+ }
+
isBroke = false;
defense = maxDefense;
durability = maxDurability;
+ System.out.println("Armor repaired!");
}
public int getDefense() {
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..c1b61bb 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,12 @@
package org.project.item.armors;
// TODO: UPDATE IMPLEMENTATION
-public class KnightArmor {
- // TODO: DESIGN ARMOR'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR
+public class KnightArmor extends Armor{
+ // TODO: DESIGN ARMOR'S ATTRIBUTES IMPLEMENT THE CONSTRUCTO
+ public KnightArmor(){
+ super(
+ 15,
+ 120
+ );
+}
}
\ 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..454b419 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,8 +1,11 @@
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
*/
+ public abstract void use();
}
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..f77c32a 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,14 +3,25 @@ package org.project.item.consumables;
import org.project.entity.Entity;
// TODO: UPDATE IMPLEMENTATION
-public class Flask {
+ public abstract class Flask extends Consumable {
+
/*
THIS IS AN EXAMPLE OF A CONSUMABLE DESIGN.
*/
+ public Flask(){
+
+ }
// TODO: UPDATE USE METHOD
@Override
public void use(Entity target) {
- target.heal(target.getMaxHP() / 10);
+ int healAmount = target.getMaxHP() / 10;
+ target.heal(healAmount);
+ System.out.println("Flask used! Healed"+ healAmount+ "HP.");
+ }
+
+ @Override
+ public void use() {
+
}
}
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..a2997ab 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,8 @@ 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,14 +14,33 @@ public class Sword {
int abilityCharge;
public Sword() {
- // TODO: DESIGN SWORD'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR
+
+ super(
+ 25, // damage
+ 10 // manaCost
+ );
+
+ this.abilityCharge = 0;
}
// TODO: (BONUS) UPDATE THE UNIQUE ABILITY
public void uniqueAbility(ArrayList targets) {
+
abilityCharge += 2;
+
+ System.out.println("Sword Unique Ability Activated!");
+
+ int damage = getDamage();
+
+ // BONUS EFFECT: charged attack
+ if (abilityCharge >= 4) {
+ damage *= 2;
+ abilityCharge = 0;
+ System.out.println("POWER STRIKE!");
+ }
+
for (Entity target : targets) {
- target.takeDamage(getDamage());
+ target.takeDamage(damage);
}
}
-}
+}
\ No newline at end of file
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..a78ff13 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,12 +1,13 @@
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;
-
/*
TODO: ADD OTHER REQUIRED AND BONUS ATTRIBUTES
*/
@@ -24,12 +25,10 @@ public abstract class Weapon {
public int getDamage() {
return damage;
}
-
public int getManaCost() {
return manaCost;
}
-
/*
TODO: ADD OTHER REQUIRED AND BONUS METHODS
*/
-}
+}
\ No newline at end of file
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..414aa42 100644
--- a/Java-Knight/src/main/java/org/project/location/Location.java
+++ b/Java-Knight/src/main/java/org/project/location/Location.java
@@ -5,13 +5,29 @@ import org.project.entity.enemies.Enemy;
import java.util.ArrayList;
public class Location {
+
private String name;
private ArrayList enemies;
- public Location(ArrayList locations, ArrayList enemies) {
- this.locations = locations;
- this.enemies = enemies;
+ private ArrayList connectedLocations;
+
+ public Location(String name) {
+
+ this.name = name;
+
+ this.enemies = new ArrayList<>();
+ this.connectedLocations = new ArrayList<>();
+ }
+
+ // add enemy to location
+ public void addEnemy(Enemy enemy) {
+ enemies.add(enemy);
+ }
+
+ // connect locations (for movement system)
+ public void addLocation(Location location) {
+ connectedLocations.add(location);
}
public String getName() {
@@ -19,10 +35,10 @@ public class Location {
}
public ArrayList getLocations() {
- return locations;
+ return connectedLocations;
}
public ArrayList getEnemies() {
return enemies;
}
-}
+}
\ No newline at end of file
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..8fd5677
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..5cfcdf2
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/Enemy.class b/Java-Knight/target/classes/org/project/entity/enemies/Enemy.class
new file mode 100644
index 0000000..78a0e4e
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/Skeleton.class b/Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class
new file mode 100644
index 0000000..dc3d4b2
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/players/Knight.class b/Java-Knight/target/classes/org/project/entity/players/Knight.class
new file mode 100644
index 0000000..8360669
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..7edad0a
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/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..dd2aa18
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..ef0ee93
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..66c04a2
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..89f37ad
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/Sword.class b/Java-Knight/target/classes/org/project/item/weapons/Sword.class
new file mode 100644
index 0000000..4292029
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..9ab153c
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..99cd35b
Binary files /dev/null and b/Java-Knight/target/classes/org/project/location/Location.class differ