From e171d9e3c3b873217f3da8e5c5820172d3ff6df1 Mon Sep 17 00:00:00 2001 From: Amir mohammad Date: Sat, 6 Jun 2026 18:33:00 +0330 Subject: [PATCH] Complete text-based RPG game with combat, leveling, and classes --- Java-Knight/.idea/.gitignore | 10 + Java-Knight/.idea/compiler.xml | 13 + Java-Knight/.idea/encodings.xml | 7 + Java-Knight/.idea/jarRepositories.xml | 20 + Java-Knight/.idea/misc.xml | 12 + Java-Knight/.idea/modules.xml | 8 + Java-Knight/.idea/vcs.xml | 6 + Java-Knight/Java-Knight.iml | 8 + .../src/main/java/org/project/Main.java | 323 +++++++++++++++- .../main/java/org/project/entity/Entity.java | 18 +- .../org/project/entity/enemies/Dragon.java | 25 ++ .../org/project/entity/enemies/Enemy.java | 77 +++- .../org/project/entity/enemies/Goblin.java | 36 ++ .../org/project/entity/enemies/Skeleton.java | 38 +- .../org/project/entity/enemies/Vampire.java | 27 ++ .../org/project/entity/players/Assassin.java | 43 +++ .../org/project/entity/players/Knight.java | 47 ++- .../org/project/entity/players/Player.java | 347 ++++++++++++++---- .../org/project/entity/players/Wizard.java | 41 +++ .../java/org/project/item/armors/Armor.java | 23 +- .../org/project/item/armors/AssasinArmor.java | 11 + .../java/org/project/item/armors/Cloak.java | 11 + .../org/project/item/armors/KnightArmor.java | 11 +- .../project/item/consumables/Consumable.java | 8 - .../org/project/item/consumables/Flask.java | 16 - .../java/org/project/item/weapons/Knife.java | 15 + .../java/org/project/item/weapons/Sword.java | 18 +- .../java/org/project/item/weapons/Wand.java | 16 + .../java/org/project/item/weapons/Weapon.java | 24 +- .../java/org/project/location/Location.java | 45 ++- .../target/classes/org/project/Main.class | Bin 0 -> 9939 bytes .../classes/org/project/entity/Entity.class | Bin 0 -> 314 bytes .../org/project/entity/enemies/Dragon.class | Bin 0 -> 836 bytes .../org/project/entity/enemies/Enemy.class | Bin 0 -> 1993 bytes .../org/project/entity/enemies/Goblin.class | Bin 0 -> 1105 bytes .../org/project/entity/enemies/Skeleton.class | Bin 0 -> 1192 bytes .../org/project/entity/enemies/Vampire.class | Bin 0 -> 1017 bytes .../org/project/entity/players/Assassin.class | Bin 0 -> 1361 bytes .../org/project/entity/players/Knight.class | Bin 0 -> 1916 bytes .../org/project/entity/players/Player.class | Bin 0 -> 6469 bytes .../org/project/entity/players/Wizard.class | Bin 0 -> 1368 bytes .../classes/org/project/item/Item.class | Bin 0 -> 153 bytes .../org/project/item/armors/Armor.class | Bin 0 -> 1103 bytes .../project/item/armors/AssasinArmor.class | Bin 0 -> 512 bytes .../org/project/item/armors/Cloak.class | Bin 0 -> 491 bytes .../org/project/item/armors/KnightArmor.class | Bin 0 -> 509 bytes .../org/project/item/weapons/Knife.class | Bin 0 -> 407 bytes .../org/project/item/weapons/Sword.class | Bin 0 -> 403 bytes .../org/project/item/weapons/Wand.class | Bin 0 -> 444 bytes .../org/project/item/weapons/Weapon.class | Bin 0 -> 572 bytes .../org/project/location/Location.class | Bin 0 -> 1445 bytes README.md | 205 +++-------- 52 files changed, 1172 insertions(+), 337 deletions(-) create mode 100644 Java-Knight/.idea/.gitignore create mode 100644 Java-Knight/.idea/compiler.xml create mode 100644 Java-Knight/.idea/encodings.xml create mode 100644 Java-Knight/.idea/jarRepositories.xml create mode 100644 Java-Knight/.idea/misc.xml create mode 100644 Java-Knight/.idea/modules.xml create mode 100644 Java-Knight/.idea/vcs.xml create mode 100644 Java-Knight/Java-Knight.iml create mode 100644 Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java create mode 100644 Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java create mode 100644 Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java 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 create mode 100644 Java-Knight/src/main/java/org/project/item/armors/AssasinArmor.java create mode 100644 Java-Knight/src/main/java/org/project/item/armors/Cloak.java delete mode 100644 Java-Knight/src/main/java/org/project/item/consumables/Consumable.java delete mode 100644 Java-Knight/src/main/java/org/project/item/consumables/Flask.java create mode 100644 Java-Knight/src/main/java/org/project/item/weapons/Knife.java create mode 100644 Java-Knight/src/main/java/org/project/item/weapons/Wand.java create mode 100644 Java-Knight/target/classes/org/project/Main.class create mode 100644 Java-Knight/target/classes/org/project/entity/Entity.class create mode 100644 Java-Knight/target/classes/org/project/entity/enemies/Dragon.class create mode 100644 Java-Knight/target/classes/org/project/entity/enemies/Enemy.class create mode 100644 Java-Knight/target/classes/org/project/entity/enemies/Goblin.class create mode 100644 Java-Knight/target/classes/org/project/entity/enemies/Skeleton.class create mode 100644 Java-Knight/target/classes/org/project/entity/enemies/Vampire.class create mode 100644 Java-Knight/target/classes/org/project/entity/players/Assassin.class create mode 100644 Java-Knight/target/classes/org/project/entity/players/Knight.class create mode 100644 Java-Knight/target/classes/org/project/entity/players/Player.class create mode 100644 Java-Knight/target/classes/org/project/entity/players/Wizard.class create mode 100644 Java-Knight/target/classes/org/project/item/Item.class create mode 100644 Java-Knight/target/classes/org/project/item/armors/Armor.class create mode 100644 Java-Knight/target/classes/org/project/item/armors/AssasinArmor.class create mode 100644 Java-Knight/target/classes/org/project/item/armors/Cloak.class create mode 100644 Java-Knight/target/classes/org/project/item/armors/KnightArmor.class create mode 100644 Java-Knight/target/classes/org/project/item/weapons/Knife.class create mode 100644 Java-Knight/target/classes/org/project/item/weapons/Sword.class create mode 100644 Java-Knight/target/classes/org/project/item/weapons/Wand.class create mode 100644 Java-Knight/target/classes/org/project/item/weapons/Weapon.class create mode 100644 Java-Knight/target/classes/org/project/location/Location.class diff --git a/Java-Knight/.idea/.gitignore b/Java-Knight/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/Java-Knight/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/Java-Knight/.idea/compiler.xml b/Java-Knight/.idea/compiler.xml new file mode 100644 index 0000000..935cb4a --- /dev/null +++ b/Java-Knight/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Java-Knight/.idea/encodings.xml b/Java-Knight/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/Java-Knight/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Java-Knight/.idea/jarRepositories.xml b/Java-Knight/.idea/jarRepositories.xml new file mode 100644 index 0000000..4158879 --- /dev/null +++ b/Java-Knight/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Java-Knight/.idea/misc.xml b/Java-Knight/.idea/misc.xml new file mode 100644 index 0000000..eba6e1f --- /dev/null +++ b/Java-Knight/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/Java-Knight/.idea/modules.xml b/Java-Knight/.idea/modules.xml new file mode 100644 index 0000000..ec92401 --- /dev/null +++ b/Java-Knight/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Java-Knight/.idea/vcs.xml b/Java-Knight/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/Java-Knight/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Java-Knight/Java-Knight.iml b/Java-Knight/Java-Knight.iml new file mode 100644 index 0000000..abe781f --- /dev/null +++ b/Java-Knight/Java-Knight.iml @@ -0,0 +1,8 @@ + + + + + + + + \ 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..5229dac 100644 --- a/Java-Knight/src/main/java/org/project/Main.java +++ b/Java-Knight/src/main/java/org/project/Main.java @@ -1,15 +1,328 @@ package org.project; -import org.project.location.Location; +import org.project.entity.enemies.*; +import org.project.entity.players.*; +import org.project.location.Location; import java.util.ArrayList; import java.util.List; +import java.util.Random; +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 + private static final String RESET = "\u001B[0m"; + private static final String RED = "\u001B[31m"; + private static final String GREEN = "\u001B[32m"; + private static final String YELLOW = "\u001B[33m"; + private static final String BLUE = "\u001B[34m"; + + private static boolean gameRunning = true; + static List locations = new ArrayList<>(); + + public static void main(String[] args) { + + Scanner scanner = new Scanner(System.in); + + Random random = new Random(); + + Location castle = new Location("Castle", new Dragon()); + Location forest = new Location("Forest"); + Location ruins = new Location("Ruins"); + Location village = new Location("Village"); + + locations.add(forest); + locations.add(ruins); + locations.add(village); + locations.add(castle); + + boolean isRunning = true; + + while (isRunning){ + System.out.println(YELLOW + "------------------Java knight------------------" + RESET); + System.out.println(" Choose your option :"); + System.out.println(BLUE + " 1." + RESET + " Start a new game"); + System.out.println(BLUE + " 2." + RESET + " Exit"); + int option = scanner.nextInt(); + switch (option){ + case 1: + startNewGame(scanner, random); + break; + case 2: + System.out.println("Goodbye!"); + isRunning = false; + break; + default: + continue; + } + + } + } + + + + public static void startNewGame(Scanner scanner, Random random){ + Player player; + int randNum1 = random.nextInt(3); + + System.out.println("Enter your name : "); + String name = scanner.next(); + Location currentLocation = locations.get(randNum1); + + int charOption = 0; + + while ( (charOption <= 0) || + (charOption >= 4)) { + System.out.println("Choose your character :"); + System.out.println(BLUE + " 1." + RESET + " Knight"); + System.out.println(BLUE + " 2." + RESET + " Assassin"); + System.out.println(BLUE + " 3." + RESET + " Wizard"); + charOption = scanner.nextInt(); + } + + player = switch (charOption) { + case 1 -> new Knight(name); + case 2 -> new Assassin(name); + case 3 -> new Wizard(name); + default -> null; + }; + + + gameRunning = true; + + System.out.println("Going to : " + GREEN + currentLocation.getName() + RESET); + spawnRandomEnemy(currentLocation,random); + + + while (gameRunning && !player.isDead()){ + int choice = miniMenu(currentLocation,player); + + switch (choice){ + case 1: + if (currentLocation.hasEnemy()) { + fight(player, currentLocation.getEnemy(), currentLocation); + if (!player.isDead() && !currentLocation.hasEnemy()) { + // gain XP and recover + player.gainXP(100); + player.fullRestore(); + System.out.println(GREEN + "HP and MP restored." + RESET); + // spawn a new enemy + spawnRandomEnemy(currentLocation, random); + } + } + break; + case 2: + currentLocation = moveToLocation(scanner, currentLocation, player); + if (!currentLocation.hasEnemy()) { + spawnRandomEnemy(currentLocation, random); + } + System.out.println(GREEN + "Arrived at: " + currentLocation.getName() + RESET); + break; + case 3: + if (player.hasAllKeys()){ + currentLocation = locations.get(3); + System.out.println("--DRAGON FIGHT--" ); + Enemy dragon = new Dragon(); + fight(player,dragon,currentLocation); + if (dragon.isDead()){ + System.out.println(YELLOW + "VICTORY!" + RESET); + System.out.println("Level : " + player.getLevel()); + gameRunning = false; + } + }else { + System.out.println("Locked !"); + } + break; + + } + } + } + + public static int miniMenu(Location loc,Player player){ + boolean castleUnLocked = player.hasGoblinKey() && player.hasSkelKey() && player.hasVampKey(); + Scanner scanner = new Scanner(System.in); + int chosenOpt = 0; + + while (chosenOpt <= 0 || + chosenOpt >= 4){ + System.out.println("Choose an option : "); + + System.out.println(BLUE + " 1." + RESET + " Stay at " + loc.getName() + " and fight with " + loc.getEnemy().getName()); + System.out.println(BLUE + " 2." + RESET + " Move to another place"); + if (castleUnLocked){ + System.out.println(BLUE + " 3." + YELLOW + " Go to castle and fight with the dragon" + RESET); + } + else { + System.out.println(" \uD83D\uDD12" + BLUE + "3. Go to castle and fight with the dragon" + RESET); + } + + chosenOpt = scanner.nextInt(); + + } + + return chosenOpt; + } + + private static void spawnRandomEnemy(Location location, Random random) { + int enemyType = random.nextInt(3); + switch (enemyType){ + case 0: + location.setEnemy(new Vampire()); + System.out.println("A " + RED + "Vampire" + RESET + " Spawned !"); + break; + case 1: + location.setEnemy(new Skeleton()); + System.out.println("A Skeleton Spawned !"); + break; + case 2: + location.setEnemy(new Goblin()); + System.out.println("A " + GREEN + "Goblin" + RESET + " Spawned !"); + break; + } + } + + private static Location moveToLocation(Scanner scanner, Location current, Player player) { + int choice = -1; + do { + System.out.println("Choose a location to move to:"); + for (int i = 0; i < locations.size(); i++) { + String prefix = locations.get(i).equals(current) ? " * " : " "; + System.out.println(BLUE + " " + (i + 1) + "." + RESET + " " + prefix + locations.get(i).getName()); + } + choice = scanner.nextInt() - 1; + if (choice == 3 && !player.hasAllKeys()){ + System.out.println("Locked!"); + choice = -1; + } + } while (choice < 0 || choice >= locations.size()); + + return locations.get(choice); + } + + private static void fight(Player player, Enemy enemy, Location location) { + System.out.println(RED + " COMBAT STARTED!" + RESET); + + while (!player.isDead() && !enemy.isDead()) { + playerTurn(player, enemy); + + try { + Thread.sleep(500); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + if (enemy.isDead()) { + break; + } + + if (!enemy.isStunned()) { + enemyTurn(player, enemy); + } else { + System.out.println(BLUE + enemy.getName() + RESET + " is stunned. skipping to player..."); + enemy.stun(false); + } + } + + if (player.isDead()){ + System.out.println("Game over."); + System.out.println("Level : " + player.getLevel()); + gameRunning = false; + } else if (enemy.isDead()) { + System.out.println(player.getName() + RED + " Killed " + "a " + RESET + enemy.getName() + " at " + GREEN + location.getName() + RESET); + keyMechanic(player,enemy); + location.clearEnemy(); + + } + + } + + private static void playerTurn(Player player, Enemy enemy) { + Scanner scanner = new Scanner(System.in); + System.out.println("\n" + BLUE + "Your Turn:" + RESET); + System.out.println(RED + "HP : " + RESET + player.getHp() + "/" + player.getMaxHP() + + GREEN + " | MP: " + RESET + player.getMp() + "/" + player.getMaxMP()); + System.out.println(BLUE + " 1." + RESET + " Light Attack " + GREEN + "(0 MP)" + RESET); + System.out.println(BLUE + " 2." + RESET + " Heavy Attack " + GREEN + "(-" + player.getWeapon().getManaCost() + " MP)" + RESET); + System.out.println(BLUE + " 3." + RESET + " Defend " + GREEN + "(-5 MP)" + RESET); + System.out.println(BLUE + " 4." + RESET + " Heal " + GREEN + "(-10 MP)" + RESET); + System.out.println(BLUE + " 5." + RESET + " Special Ability " + GREEN + "(-" + player.specialAblMPCost() + " MP)" + RESET); + + int choice; + do { + choice = scanner.nextInt(); + } while (choice <= 0 || + choice >= 6); + + switch (choice) { + case 1: + player.lightAttack(enemy); + break; + case 2: + if (player.getMp() >= player.getWeapon().getManaCost()) { + player.heavyAttack(enemy); + } else { + System.out.println(RED + "Not enough MP!, light attacking." + RESET); + player.lightAttack(enemy); + } + break; + case 3: + player.defend(); + break; + case 4: + if (player.getMp() >= 10) { + player.heal(30); + } else { + System.out.println(RED + "Not enough MP!" + RESET); + } + break; + case 5: + if (player.getMp() >= player.specialAblMPCost()) { + player.specialAbility(enemy); + } else { + System.out.println(RED + "Not enough MP!" + RESET); + } + break; + } + + System.out.println(RED + "HP : " + RESET + player.getHp() + "/" + player.getMaxHP() + + GREEN + " | MP: " + RESET + player.getMp() + "/" + player.getMaxMP()); + System.out.println(RED + "Enemy's HP : " + RESET + enemy.getHp()); + } + + private static void enemyTurn(Player player,Enemy enemy) { + System.out.println(RED + "\n" + enemy.getName() + "'s Turn:" + RESET); + + // randomly choosing between attack and specialAbility with probability of 1/3 + Random random = new Random(); + if (random.nextInt(3) == 0) { + enemy.specialAbility(player); + } else { + enemy.attack(player); + } + + System.out.println(RED + "Your HP : " + RESET + player.getHp() + "/" + player.getMaxHP()); + } + + private static void keyMechanic(Player player, Enemy enemy){ + Random random = new Random(); + + if (enemy instanceof Goblin){ + if (player.hasGoblinKey()) return; + if (random.nextInt(3) == 0) player.gotGoblinKey(); + } + else if (enemy instanceof Vampire){ + if (player.hasVampKey()) return; + if (random.nextInt(3) == 0) player.gotVampKey(); + } + else if (enemy instanceof Skeleton) { + if (player.hasSkelKey()) return; + if (random.nextInt(3) == 0) player.gotSkelKey(); + } + + + } + + + } \ 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..53e3036 100644 --- a/Java-Knight/src/main/java/org/project/entity/Entity.java +++ b/Java-Knight/src/main/java/org/project/entity/Entity.java @@ -3,19 +3,19 @@ package org.project.entity; public interface Entity { void attack(Entity target); - void defend(); - void heal(int health); - void fillMana(int mana); - void takeDamage(int damage); - int getMaxHP(); + public abstract boolean isDead(); + + public abstract boolean isCritical(); + + public abstract void makeCritical(boolean value); + + public abstract boolean isStunned(); + + public abstract void stun(boolean value); - 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..cc1a985 --- /dev/null +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Dragon.java @@ -0,0 +1,25 @@ +package org.project.entity.enemies; + +import org.project.entity.players.Player; + +public class Dragon extends Enemy{ + + private static int HP = 500; + private static int fire = 60; + + public Dragon () { + super (HP , fire); + } + + @Override + public String getName() { + return "Dragon"; + } + + @Override + public void specialAbility(Player target) { + target.breakShield(); + target.takeDamage(fire); + + } +} 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..7bddea3 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,93 @@ package org.project.entity.enemies; -import org.project.item.weapons.Weapon; +import org.project.entity.Entity; +import org.project.entity.players.Player; -// TODO: UPDATE IMPLEMENTATION -public abstract class Enemy { - Weapon weapon; + +public abstract class Enemy implements Entity { private int hp; private int mp; + private boolean stunned = false; + private boolean critical = false; + private boolean dead = false; + private int enemyDamage; - public Enemy(int hp, int mp, Weapon weapon) { + private static double Damagemodifier = 1.5; + + public Enemy(int hp, int enemyDamage) { this.hp = hp; - this.mp = mp; + this.enemyDamage = enemyDamage; + } - this.weapon = weapon; + public void attack(Entity target){ + if (critical){ + target.takeDamage((int)(enemyDamage * Damagemodifier)); + } + else { + target.takeDamage(enemyDamage); + } } @Override public void takeDamage(int damage) { + hp -= damage; + if (hp <= 0){ + hp = 0; + makeDie(); + } + } + + public void makeDie() { + dead = true; } public int getHp() { + return hp; } + public void setHp(int newHp) { + hp = newHp; + } + public int getMp() { + return mp; } - public Weapon getWeapon() { - return weapon; + @Override + public boolean isCritical(){ + return critical; } + + @Override + public void makeCritical(boolean value) { + critical = value; + } + + @Override + public boolean isStunned() { + return stunned; + } + + @Override + public void stun(boolean value) { + stunned = value; + } + + @Override + public boolean isDead() { + return dead; + } + + @Override + public void heal(int health) { + hp += health; + } + + + public abstract String getName(); + + public abstract void specialAbility(Player target); } 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..2730b7d --- /dev/null +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Goblin.java @@ -0,0 +1,36 @@ +package org.project.entity.enemies; + +import java.util.Random; + +import org.project.entity.Entity; +import org.project.entity.players.Player; + +public class Goblin extends Enemy{ + + private static int HP = 80; + private static int goblinDamage = 20; + + public Goblin () { + super(HP , goblinDamage); + } + + @Override + public void specialAbility(Player target) { + this.criticality(); + super.attack(target); + } + + @Override + public String getName() { + return "Goblin"; + } + + private void criticality(){ + Random random = new Random(); + int randNum = random.nextInt(100); + if (randNum < 80){ + this.makeCritical(true); + } + } + +} 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..b0dfdee 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,38 @@ 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.entity.players.Player; + +public class Skeleton extends Enemy { + + private static int HP = 100; + private int deathCounter = 0; + private static int skeletonDamage = 30; + + public Skeleton(){ + super(HP,skeletonDamage); + } + + @Override + public void specialAbility(Player target) { + super.attack(target); + } + + @Override + public String getName() { + return "Skeleton"; + } + + @Override + public void makeDie() { + if (deathCounter == 0){ + this.setHp(HP / 2); + deathCounter++; + System.out.println("Skeleton resurrected!"); + return; + } + + super.makeDie(); + } + } 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..6ecf7bf --- /dev/null +++ b/Java-Knight/src/main/java/org/project/entity/enemies/Vampire.java @@ -0,0 +1,27 @@ +package org.project.entity.enemies; + +import org.project.entity.Entity; +import org.project.entity.players.Player; + +public class Vampire extends Enemy{ + + private static int HP = 200; + private static int vampierDamage = 40; + + public Vampire () { + super(HP , vampierDamage); + } + + @Override + public String getName() { + return "Vampire"; + } + + @Override + public void specialAbility(Player target) { + System.out.println("Stealing life!..."); + target.takeDamage(vampierDamage); + this.heal((vampierDamage * 70) / 100); + } + +} 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..5958dee --- /dev/null +++ b/Java-Knight/src/main/java/org/project/entity/players/Assassin.java @@ -0,0 +1,43 @@ +package org.project.entity.players; + +import org.project.entity.Entity; +import org.project.item.armors.AssasinArmor; +import org.project.item.weapons.Knife; +import org.project.item.weapons.Weapon; +import org.project.item.armors.Armor; + +public class Assassin extends Player{ + + private static int Maxhp = 300; + private static int Maxmp = 50; + private static int SpecialabilitymanaCost = 10; + + public Assassin(String name){ + super(name,Maxhp,Maxmp,new Knife(),new AssasinArmor(),Maxhp,Maxmp); + } + + @Override + public void specialAbility(Entity target) { + + + if (getMp() < SpecialabilitymanaCost) { + + System.out.println("Not enough mana!"); + + return; + } + + System.out.println("Turning invisible..."); + this.defend(); + this.makeCritical(true); + fillMana(-SpecialabilitymanaCost); + } + + @Override + public int specialAblMPCost() { + return SpecialabilitymanaCost; + } + +} + + 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..55a0746 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,45 @@ 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.entity.Entity; +import org.project.entity.enemies.Enemy; +import org.project.item.armors.Armor; +import org.project.item.armors.KnightArmor; +import org.project.item.weapons.Sword; +import org.project.item.weapons.Weapon; + +public class Knight extends Player { + + private static int Maxhp = 400; + private static int Maxmp = 40; + private static int SpecialabilitymanaCost = 20; + + public Knight(String name) { + + super(name,Maxhp,Maxmp,new Sword(),new KnightArmor(),Maxhp,Maxmp); + } + + @Override + public void specialAbility(Entity target) { + + + if (getMp() < SpecialabilitymanaCost) { + + System.out.println("Not enough mana!"); + + return; + } + System.out.println("Performing shield bash..."); + + target.stun(true); + target.takeDamage(50); + fillMana(-SpecialabilitymanaCost); + + System.out.println(name + " used Shield Bash!"); + System.out.println(" is stunned!"); + } + + @Override + public int specialAblMPCost() { + return SpecialabilitymanaCost; + } +} \ No newline at end of file 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..62e765e 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,86 +4,291 @@ import org.project.entity.Entity; import org.project.item.armors.Armor; import org.project.item.weapons.Weapon; -// TODO: UPDATE IMPLEMENTATION -public abstract class Player { - protected String name; - Weapon weapon; - 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) { - this.name = name; - this.hp = hp; - this.mp = mp; + public abstract class Player implements Entity { + protected String name; + protected Weapon weapon; + protected Armor armor; + private int hp; + private int maxHP; + private int mp; + private int maxMP; + private int experiencePoint = 0; + private int xpToNextLevel = 100; + private int level = 1; + private boolean stunned = false; + private boolean defending = false; + private boolean critical = false; + private boolean dead = false; + private boolean hasGoblinKey = false; + private boolean hasVampKey = false; + private boolean hasSkelKey = false; - this.weapon = weapon; - this.armor = armor; - } - - @Override - public void attack(Entity target) { - target.takeDamage(weapon.getDamage()); - } - - @Override - public void defend() { - // TODO - } + private static double Damagemodifier = 1.5; + private static int Lightattackdamage = 20; + protected static int Defendmpcost = 5; + protected static int Healmpcost = 10; - @Override - public void takeDamage(int damage) { - hp -= damage - armor.getDefense(); - } + 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.weapon = weapon; + this.armor = armor; + + this.maxHP = maxHP; + this.maxMP = maxMP; + } + + @Override + public void attack(Entity target) { + + lightAttack(target); + } + + public void lightAttack(Entity target) + { + if (critical){ + target.takeDamage((int)(Lightattackdamage * Damagemodifier)); + this.makeCritical(false); + } + else { + target.takeDamage(Lightattackdamage); + } + } + + public void heavyAttack(Entity target){ + int cost = weapon.getManaCost(); + + if (mp < cost) { + System.out.println("Not enough MP!"); + return; + } + + mp -= cost; + + int damage = weapon.getDamage(); + if (critical){ + damage = (int)(damage * Damagemodifier); + critical = false; + } + + target.takeDamage(damage); + } + + public void defend() { + if (mp < Defendmpcost) { + System.out.println("Not enough MP!"); + return; + } + + mp -= Defendmpcost; + defending = true; + System.out.println("Defending"); + } + + public void breakShield(){ + if (defending){ + defending = false; + System.out.println("Shield broken"); + } + } + + @Override + public void takeDamage(int damage) { + + if (defending) { + System.out.println("Defended the attack."); + defending = false; + return; + } + + int finalDamage = damage; + + if (armor != null && !armor.isBroke()) { + finalDamage = Math.max(0, damage - armor.getDefense()); + armor.use(); + } + + hp -= finalDamage; + + if (hp <= 0) { + hp = 0; + dead = true; + } + } + + @Override + public void heal(int health) { + if (mp < Healmpcost) { + System.out.println("Not enough MP!"); + return; + } + + mp -= Healmpcost; + + hp += health; + if (hp > maxHP) hp = maxHP; + } + + public void gainXP(int amount){ + this.experiencePoint += amount; + System.out.println("Gained " + amount + " XP."); + while (experiencePoint >= xpToNextLevel){ + levelUp(); + } + } + + public void levelUp(){ + this.experiencePoint -= xpToNextLevel; + this.level++; + + int oldMaxHP = maxHP; + int oldMaxMP = maxMP; + + maxMP += 5; + maxHP += 50; - @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; + + System.out.println("Level Up! You are now at level : " + level); + System.out.println("Stats : HP : " + oldMaxHP + " -> " + maxHP + " , MP : " + oldMaxMP + " -> " + maxMP); + + xpToNextLevel += xpToNextLevel / 4; } + + public int getLevel(){ + + return level; + } + + public void fullRestore(){ + this.setHp(getMaxHP()); + this.setMp(getMaxMP()); + } + + public void makeCritical(boolean value) { + + critical = value; + } + + + public void fillMana(int mana) { + mp += mana; + if (mp > maxMP) { + mp = maxMP; + } + } + + public void gotGoblinKey(){ + hasGoblinKey = true; + System.out.println("Got the goblin key."); + } + + public void gotVampKey(){ + hasVampKey = true; + System.out.println("Got the vampire key."); + } + + public void gotSkelKey(){ + hasSkelKey = true; + System.out.println("Got the skeleton key."); + } + + public void setMp(int mp){ + this.mp = mp; + } + + public void setHp(int hp){ + this.hp = hp; + } + + public String getName() { + + return name; + } + + 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; + } + + public Armor getArmor() { + + return armor; + } + + public boolean defending() { + + return defending; + } + + public boolean isDead() { + + return dead; + } + + public boolean isStunned() { + + return stunned; + } + + @Override + public boolean isCritical(){ + return critical; + } + + public boolean hasGoblinKey(){ + + return hasGoblinKey; + } + + public boolean hasSkelKey() { + + return hasSkelKey; + } + + public boolean hasVampKey() { + + return hasVampKey; + } + + public boolean hasAllKeys(){ + + return (hasSkelKey && hasVampKey && hasGoblinKey); + } + + public abstract void specialAbility(Entity target); + + public void stun(boolean value) { + + stunned = value; + } + public abstract int specialAblMPCost(); } - public String getName() { - return name; - } - public int getHp() { - return hp; - } - - @Override - public int getMaxHP() { - return maxHP; - } - - public int getMp() { - return mp; - } - - @Override - public int getMaxMP() { - return maxMP; - } - - public Weapon getWeapon() { - return weapon; - } - - public Armor getArmor() { - return armor; - } - -} 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..7ecb27a --- /dev/null +++ b/Java-Knight/src/main/java/org/project/entity/players/Wizard.java @@ -0,0 +1,41 @@ +package org.project.entity.players; + +import org.project.entity.Entity; +import org.project.item.armors.Cloak; +import org.project.item.weapons.Wand; +import org.project.item.weapons.Weapon; +import org.project.item.armors.Armor; + +public class Wizard extends Player { + + private static int Maxhp = 500; + private static int Maxmp = 45; + private static int SpecialabilitymanaCost = 15; + + public Wizard (String name) { + super(name,Maxhp,Maxmp,new Wand(),new Cloak(),Maxhp,Maxmp); + } + + @Override + public void specialAbility(Entity target) { + + + if (getMp() < SpecialabilitymanaCost) { + + System.out.println("Not enough mana!"); + + return; + } + + System.out.println("Casting spell..."); + target.takeDamage(40); + this.heal(20); + fillMana(-SpecialabilitymanaCost); + } + + @Override + public int specialAblMPCost() { + return SpecialabilitymanaCost; + } +} + 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..2b209bb 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 @@ -1,42 +1,45 @@ package org.project.item.armors; -// TODO: UPDATE IMPLEMENTATION public abstract class Armor { private int defense; - private int maxDefense; private int durability; - private int maxDurability; + private int durabilityCost; private boolean isBroke; - public Armor(int defense, int durability) { + public Armor(int defense, int durability, int durabilityCost) { this.defense = defense; this.durability = durability; + this.durabilityCost = durabilityCost; + } + + public void use(){ + durability -= durabilityCost; + System.out.println("Used Armor."); + checkBreak(); } public void checkBreak() { if (durability <= 0) { isBroke = true; defense = 0; + durability = 0; } } - // TODO: (BONUS) UPDATE THE REPAIR METHOD - public void repair() { - isBroke = false; - defense = maxDefense; - durability = maxDurability; - } public int getDefense() { + return defense; } public int getDurability() { + return durability; } public boolean isBroke() { + return isBroke; } } diff --git a/Java-Knight/src/main/java/org/project/item/armors/AssasinArmor.java b/Java-Knight/src/main/java/org/project/item/armors/AssasinArmor.java new file mode 100644 index 0000000..25aa950 --- /dev/null +++ b/Java-Knight/src/main/java/org/project/item/armors/AssasinArmor.java @@ -0,0 +1,11 @@ +package org.project.item.armors; + +public class AssasinArmor extends Armor{ + private static int Durability = 75; + private static int Defense = 20; + private static int Defensecost = 25; + + public AssasinArmor(){ + super(Defense,Durability,Defensecost); + } +} diff --git a/Java-Knight/src/main/java/org/project/item/armors/Cloak.java b/Java-Knight/src/main/java/org/project/item/armors/Cloak.java new file mode 100644 index 0000000..7b9d16d --- /dev/null +++ b/Java-Knight/src/main/java/org/project/item/armors/Cloak.java @@ -0,0 +1,11 @@ +package org.project.item.armors; + +public class Cloak extends Armor{ + private static int Durability = 50; + private static int Defense = 15; + private static int Defensecost = 25; + + public Cloak(){ + super(Defense,Durability,Defensecost); + } +} 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..d4ea310 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,11 @@ package org.project.item.armors; -// TODO: UPDATE IMPLEMENTATION -public class KnightArmor { - // TODO: DESIGN ARMOR'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR +public class KnightArmor extends Armor{ + private static int Durability = 100; + private static int Defense = 30; + private static int Defensecost = 25; + + public KnightArmor(){ + super(Defense,Durability,Defensecost); + } } \ 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 deleted file mode 100644 index 028e13d..0000000 --- a/Java-Knight/src/main/java/org/project/item/consumables/Consumable.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.project.item.consumables; - -// TODO: UPDATE IMPLEMENTATION -public abstract class Consumable { - /* - 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 deleted file mode 100644 index c0e7a6d..0000000 --- a/Java-Knight/src/main/java/org/project/item/consumables/Flask.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.project.item.consumables; - -import org.project.entity.Entity; - -// TODO: UPDATE IMPLEMENTATION -public class Flask { - /* - THIS IS AN EXAMPLE OF A CONSUMABLE DESIGN. - */ - - // TODO: UPDATE USE METHOD - @Override - public void use(Entity target) { - target.heal(target.getMaxHP() / 10); - } -} diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Knife.java b/Java-Knight/src/main/java/org/project/item/weapons/Knife.java new file mode 100644 index 0000000..459a71a --- /dev/null +++ b/Java-Knight/src/main/java/org/project/item/weapons/Knife.java @@ -0,0 +1,15 @@ +package org.project.item.weapons; + +import org.project.entity.Entity; + +import java.util.ArrayList; + +public class Knife extends Weapon { + + private static int Damage = 30; + + public Knife() { + super(Damage, 5); + } + +} 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..1152979 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 @@ -4,23 +4,13 @@ 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 { - int abilityCharge; + private static final int Damage = 60; + private static final int Manacost = 8; public Sword() { - // TODO: DESIGN SWORD'S ATTRIBUTES IMPLEMENT THE CONSTRUCTOR + super(Damage,Manacost); } - // TODO: (BONUS) UPDATE THE UNIQUE ABILITY - public void uniqueAbility(ArrayList targets) { - abilityCharge += 2; - for (Entity target : targets) { - target.takeDamage(getDamage()); - } - } } diff --git a/Java-Knight/src/main/java/org/project/item/weapons/Wand.java b/Java-Knight/src/main/java/org/project/item/weapons/Wand.java new file mode 100644 index 0000000..7f8036f --- /dev/null +++ b/Java-Knight/src/main/java/org/project/item/weapons/Wand.java @@ -0,0 +1,16 @@ +package org.project.item.weapons; + +import org.project.entity.Entity; + +import java.util.ArrayList; + +public class Wand extends Weapon { + + private static int Damage = 50; + private static int Manacost = 8; + + public Wand() { + super(Damage,Manacost); + } + +} 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..6ee8948 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,24 +1,12 @@ package org.project.item.weapons; -import org.project.entity.Entity; - -// TODO: UPDATE IMPLEMENTATION public abstract class Weapon { private int damage; private int manaCost; - /* - TODO: ADD OTHER REQUIRED AND BONUS ATTRIBUTES - */ - - public Weapon(int damage, int manaCost) { - this.damage = damage; - this.manaCost = manaCost; - } - - @Override - public void use(Entity target) { - target.takeDamage(damage); + public Weapon(int dmg, int mpCost) { + this.damage = dmg; + this.manaCost = mpCost; } public int getDamage() { @@ -28,8 +16,4 @@ public abstract class Weapon { 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..420df82 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,52 @@ package org.project.location; import org.project.entity.enemies.Enemy; -import java.util.ArrayList; - public class Location { private String name; + private Enemy enemy; + private boolean playerInside = false; - private ArrayList enemies; + public Location(String name) { + this.name = name; + this.enemy = null; + } - public Location(ArrayList locations, ArrayList enemies) { - this.locations = locations; - this.enemies = enemies; + public Location(String name, Enemy enemy) { + this.name = name; + this.enemy = enemy; } public String getName() { return name; } - public ArrayList getLocations() { - return locations; + public Enemy getEnemy() { + + return enemy; } - public ArrayList getEnemies() { - return enemies; + public void setPlayerInside(boolean value){ + + playerInside = value; + } + + public void setEnemy(Enemy enemy) { + + this.enemy = enemy; + } + + public boolean hasEnemy() { + + return enemy != null && !enemy.isDead(); + } + + public boolean hasPlayer() { + + return playerInside; + } + + public void clearEnemy() { + + this.enemy = null; } } 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 0000000000000000000000000000000000000000..9361f689569cae3efdcd56d2030e55c25c536102 GIT binary patch literal 9939 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 CeCBTe literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..dc4dd201eb3a42b3ef917d510cad87b41a652a2b GIT binary patch literal 314 zcmZ{fy>7xl5QOK5@ei1Ugo=jRG~5GFVj@L~l)_R9x{Y%(2gXMB8Hrb;$OGh|5PQZ_ zsx&wEX?I3Dzt_tTfHfu_dIHn3%H**scPcef6-Jx0T({!E5g702L^7u$lOJDpN5Cax zDBTOpqW6Ez%lW5(vsIL{L~oV`hW09^17(UsbR8@D7I=u}8=mQURcWJByB{8S@eiG7 zW9@;i6VnuhVv|$zk6lUGRH=H^IVTS9S1;_rt^g-rt*?6YgAR6Rl&fGiqoO|xf{P^|lJAgfG&7**#gOZOqlm*sP6NMv_o~S_>mn6sa*_u9@_$-Ta^-muQctnfz^;MtGBoo8Q`SOUFbh3i8`uTkU< zsBE1>oWuDF?+e2M9&z=EJRZCrR^+KaJnwfiN=05-Z?_bXVY-2Zz1d=8U3n`=( zCLcRboO0XgHp`zLK6dMYLVCmNdcmebvb4IN!5A_ovKDf%6qb8_v)uQ45?OY;fft<6 zxE;?Ol(%V56wE2v)xnTv;C{g_oFh)lYnXUblf{D^bs!mB(D!c(g2ek)%2x8gkMa)Z3AwvwOW`zwSQpWIjOzOaPx7jWRUdJa; zNFdR~2k@OV-r3zKl7>Gsb7$^7_nb5L=kISn0Mzhg7#dPK(iVo0VOa2kj@=9Vec^<* z@Io0L(Z&qpVOW(}o#^c)@A8f?V8YTdVqp|HhSC*~HG)27 z$ZSeahR+#>%Jq7sWf1Z;3u72(Fr7e#(%~*KVMvwLtBDBgtuWGmPx2&w0apiQMd_Ljx3jw6W_S29DU4 z${REOm~{n)1@hRW+0&4b(x~4NYM!}t0!P5(9dCfrBK5Pt?Hvd z$p&&L)5(fcQ9+d=hE?27V74h!v9rN9v6#k~SEz1_xa#Ms-D3@&!*88nUqJV*<5|WxG{&Q$2WntTGcBdwN6`w*t zA@PR~;6oYDY!@Wjm`!H(oH^fjzH|Bc>-!G?JJ=jT3~>z!14*P93ZCDzJHB@;>e3c% z>Bt^kqUDIduAT^2NUzNh+dW`ldkUL2FrqK@D=m8feB0!hD*uoCk#2OG9bfFsJ~pS zrE!}feWhO~>S+UaF+<4$A$L0r2`kK*!<>e^fq5)2n8*ARw_VFFv--WNgF_og!`;`1j!XN%uspEa9hdinAJ_-sO@e7YlKV|T9V-k< z^%sDuqS$@jBH80s@!u9OWU6Z1?|3IFB)w60qpi`aUe~XSw~nehb2Wu^)oGe$jCu#e zp{p&YznEGqx^=a@bSFV&Vx3N#tTzO6)fJ!YejiqhFDfW8s%#NE1^ta*le7GnYnXl VDhCU5^qY~UX6WSEAb$+6egidV@bdrw literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d71fab8e75e23b3ca571233ef97094806be7ed75 GIT binary patch literal 1017 zcma)4TTfF#5dNkuoYTXBUbrhLH}Mpt$NMD^6C)5w8bVUjHy@U=mc?^vP8X8?D}@9T zAAC0cDC6vDgQ$)1WoKu0=bP`FneRWod_9_hB#c2a8y;u%ub#xnriudb~=5 zo!9XZce_wik=#EG4`uRJ90nXI*W#uK8X{4~?+0`GSak?1wE-mlnBXQWYe~H?LI#`g zDt}8OjCIFRop!;9tD?J{l%%w0>F!HV;Tj_U=FisfvFxyzW~GG5gv018&9spdMP1RRKm9l WP|>@9WsvEbTAQ1c=g8Ak#8X1Nhw`5jaXIB(` zQ`o-r56p_i4}|NPbDqaNPudI(1^#WP!oZePc+^0XidEinMME<~e=UskMcMo+c*U_j z^P?@dg$^At11)G}Xq=I@^k*6B(_`xz+8Bm!1ar6STo916p<}J;+N4ub+WXRzo0iCCv#Qz$2Bv}*Zi#JSZzC3g2U;Nh`f!n+sK-DN4_MV}|3wtsb_Jlrf`Zm;sU>I_WYNO9xYA{3Z ze;zW#R()RFEAYxW=lEqJtFWTlPBP3Ct@H1%uR2w?C>EuvId;K4s|X`S%68Da*3;b3 zn9@#HBNtfuS7algLNGz=3p#y9lp=s+X8Z{32-+F+jZ+wBh?7Z#zEiXx(wjQuXjQ!f zjnn|zFhjepFdi>4OD96YE4(IjhB>^URb}~3Z&cJ|<^*?+(Dwtz5e5D;0!E}Zm_$PRxQq~742Z+fo}x5IqAjE0zVs#W)1pNakWmI8sdR5wQa@#9)L;M1-+(8%bkn&1y%rJF>%H z1z;VOLG+>DK*Yi&3@{|5 zSIag%`Ak$)R=CPmN7<&skA&xEAGmg{t{5&A_|Nqw1KZTjQ453GQ|~sK28I}}cY@eT zG_o%QZ%WtC7GFrOYQn^@g%ON046N9$t?n@NCsQQ@V+?a$&fIIrv+%2WVIqcM6O*`X zU`iuhxtRHGkO9L%a{C#7&a)18YuTdmY`2!%+}!Sp_#fTr0Lv?L%m*=Ig1`$WXzzqv?m}iJ}Fg)_9 zcmyO{RQAgucUxw6iMS&Af;VzeERxTTRB_?TR;?b_un7}Mqzt4jEa4WzM1XnTlfh_e z9LFW-9(75TqR22z?+Wj!^cqyExL>!0Q;nCoU(aMRLwFyz4J=#u03VWJXBFGZSq}un z5b;%u!bFmfQzh;8v4v0YDTAr_p}5Bzye9N%yN;h*$m!GQQ`>P0l#Z6!7Z&c|E?K#} zLB`|VjT|RIuUc3`p5aP^fb-I=aJ6r%I?a5=UF9<@_DZ!IEQ)moD{lL7P2CmM1clDa zDuo{1wq3E)YLtby$IDJYMpn2};-0P7?ahd)+Z1o^oOpWPs2szHA4+32lm=a)WG}z4 zp1D+sE{@_J>5O6K0z-!3qT-dq0&lii#m)jbgs-dAwN=sxGU36vSeJ#aq6p#*3jc)<_wN(E&U%ae&7Lp6GUb$1wlDrfv7R zJQVHA7j|faSCsUQ7=G>SP1`VxcAvXdNBHyGQXaONx$b^-?3{DlJ8Fs^=1)58AC~oF zmrHeQwITA{aff?IT{-olYJh5Y{bEyUW|$WeB=kv=aX-C~ z^c>U7)Q@X0(i1{s1SA&RqVEQ+9wAB|Ks>#440a6TEzE;gu-+m@!+5y&3KK8MrVn4y zSHDxhIA$?{`!t&h{jrHHS`m`IWrWV~0NeD{QGO>I?X{IY#XHBi`Wvic%#JUd;^s>| zd5wDUb(E0;DX<`IS(|3kgT_aYr zG)v$H{nGRxE@J_!SR{ToJNRy$@!diJJH+#0fXF6jx=R2d@eGZO4kEPkPp34#={ XM`M(%_UZpEzNeK*vmfvi%9#EadU@K> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..69e69feb105f73cc06331f007c6480132a6b743f GIT binary patch literal 6469 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 K8GprlsQoWMEeVJK literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..780991138130b326e9f79498d44d9a588cfc9df7 GIT binary patch literal 1368 zcmaJ>+foxj5IqBt4a)-IB8aF2@R9`03f>J~Fy2sNQH2%taR_Tz*z9g?1{Ht7zwp@? zp$bc_@&o)HpDoYqrl?S&FVnL<)2C0L>E55ezx@F408hKofldP{3rEl;Fd0O3JB)%2 zr>1PjSFYN&Lr-oyQPY0mzL(LOz>$i4w;l?JMID^B(5)l2w-FlX5jfcn;wq+3Kqej5&WiODMCNk(XF^r=IMl{Cg|0yrW z)CFGUmNw)YX?xPI+bb$^{d#F}ap~VYW4@)oFSN)kXih}PS4~PVX5l!-DM8&)6$-;* zVrfoVIHjc-SqYt*D?PdDdK9!FeOV5gsvB8M8kn*$jne{|Hip|xsz#t-O9>oJxVwS9 zOyY|49oZyGfSeU_ifuR`lV5EQ%Y8=le^dY+Bt7#Mo zU6xHnowCi)@w{TO*n^9hH85x45-tmjwTsv4lm~Ic2$)K4I`?Hm)*XRVt|ik|3)ggH zYTc2Z*6oIco7$0n?Rs8?^m$ee))>>jWX`kc`ItVn5108oY+nd4+oVyQ;%J2 z*<-XRune5%TH@DBq!|HZ3o|TYyrZM$3VS%VgA*TN?Oe( zxP8RHgjkVQ@F2x>pJ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3db1242f701c66f9514c4e119996f6235d620d7b GIT binary patch literal 153 zcmX^0Z`VEs1_oCKPId++Mh4ORqICU&qWrAXrmQu?7#X;N^Gl18Q{6IifT}q`2I_&# cVq;_g8UeJNfq@ZdJ}Uzoh{eDTB$*gE0AD~Ql=c!|drQb?OHY>Z%3VCvBOwfgkt9Mw*Rlk8 zr1gdVQVx`>S@mF$rslTRSIT?(3@kbyPAGVSsV0TLVJ5e5iY4b1>zDdDtuam29OkIJ zKt`o)laUMqZK3u&=xd+4>R*Ax+0V#1MjsnaTJ^_}Rn%!(KX0u76Z527z%=Rde0rDk zg#o>*F(OaiySO*daha9Q2zAUa{77k5Wdm6Mi)G}({amQQ1B)m3{l>=3f>wD JeyIID`U6)1uTua3 literal 0 HcmV?d00001 diff --git a/Java-Knight/target/classes/org/project/item/armors/AssasinArmor.class b/Java-Knight/target/classes/org/project/item/armors/AssasinArmor.class new file mode 100644 index 0000000000000000000000000000000000000000..70e7f145f41cf24c1d8d196f16be7da02d13a4ff GIT binary patch literal 512 zcmZ`#O;5r=5Pb`U!cs~>{J@Wci81KGdY70G(WH@h(Qsets!K|1w#CGsB^*pV_yhb= z##tbS3)y65-t5eKGxPKN^$p+}`(@;iw_!ObpvZ8P=x6^`CnFhVzRKj-7kZrN)bFOL zNLAc5h{5j3CmE-bfdz)4hk+!qC79u z;P&LBoTie2MRv5}p=#%NZ)U_$B`SNf<(dc2mTSxQSf?3>kA{oD!y1|^l&-8GL%E}- zD!U}mj-u#zz))=4=ydf1$v66HDsN|#p)~hmm{6tJ*Re>V&okd4Jv5#tvl_wEmgS@)sZo&KGcl#sVy8Ex;`ogXQvR RE0A7^4yRohb}27l?-#33Tm=9C literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..185e00a74bdd16769a63b47ef0c6a9d8cfb1f902 GIT binary patch literal 509 zcmZ`#O-sW-5PjRGO}kCgSU>9*hzQk#@oo{sDg=ucrS~*l+b#K!O)B`aY!8A5e}F$q zoUK86DGRgnX5YRyGv7a-UjS~gUqt~$6NZHn$_&Se8o4hjnTQ~BWhNrmS5cx;_db@R zadxc%gV`0&B2EPZ^Rz(4LRJ6f-Kp{iGL+eyF4rtrx?IcYL6T-1HX0@z3u|aH9IW!o zoyr{<%j}Aw-1a>0w9im%>uB60L$Yu5WGo)0(Lkste-Kio*-HXH?E6Y;oEMF3EK`P) z-YU1H=`I;6ogmC@`C~Fwfw+@e+gYNWPyAOOM>M5Pi!6fc4N%7Q9v3%_PIm!}CS9kv zL8t?RGQd8Yfz4pfz&}ubU+^|5a^i!O>XdC!X8p0TjU7T2wEmSY7B7I~4CgSN!#SAK ZnuBXC2CZdNS0KL<9ZtP4>=G_u?-wfAW6S^m literal 0 HcmV?d00001 diff --git a/Java-Knight/target/classes/org/project/item/weapons/Knife.class b/Java-Knight/target/classes/org/project/item/weapons/Knife.class new file mode 100644 index 0000000000000000000000000000000000000000..36a91005d6d58ac8a31db75a45f6dbc4de7ebef1 GIT binary patch literal 407 zcmZ`#yH3ME5S+6e`|LO*ghy$h3lzAdAW9QJvao1Cp}v?STx9zq$ARwx3M2|XfR93~ zkBBbKXl6A#`}qF(`~q-^eIFKV4^D^{T!u(jvv^VIxy1_g zPL+PDGm%e3r5e31I`xxUG90EG$C*vf8Tc^E*8_uFy{a;KrJC5l7*6NnS>TAy=ky7x zHV+_X5pSbIxJBv=HZj0Ic?07g@Lr9jOBj$92&uh;o?*s_ZS+ZT?EHsBCIWDK(K}d^ QK-Utwf6;`yq%7?H0=frJtN;K2 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..002028ac31c6d354db2dee7f3f8115caaa7c4902 GIT binary patch literal 403 zcmZ{gyH3ME5Jm6WPV5*bG2taq@aRGcTvA}s1duElnjlkeoK@J!_D1%ad>0iG1s}ji zA;yM+Ce3Kh-MRDFukVjf0CzaDVKAJiav7{kwGycgq!xLw5qzzRDwu6lxo}~jW25WA zhQn~WwfebrF?2&&NPWZ58As7YLc%T2`BE^jh@n5F&YBlG;aM$A+9PCe9(ci1Rq2Ll zh&gV2)>JLXHH>8;9_xHA$|pY0NEyW{ufx{ohc~i^) literal 0 HcmV?d00001 diff --git a/Java-Knight/target/classes/org/project/item/weapons/Wand.class b/Java-Knight/target/classes/org/project/item/weapons/Wand.class new file mode 100644 index 0000000000000000000000000000000000000000..0339444d926cb3cbf16a8f22e13e699e4a7e06cf GIT binary patch literal 444 zcmZ`#yH3ME5S(+I*giWC!n;6-ii847bcl$ChZM=sfI@w7PT?Zk7dZ}m7fFFc!3XeB zh&?BwOS88-w>z`5Kfhn!0Pb+;!9vA>9iWOD!;#L%;WXD185f}{WE#FpG1b{Dd=c4* zp>``$F_sLhZzkOUo*8o=L?&WAD>!@v4(b6KXfhmcrYmWQu%|LrTr*TV{eE}AQ0bUx z-{=vkG$WPC$9X!G`Lh@%gtQ|ai)0{jW$HC(7q4nYYSCsn+Ww06?8V7ik3Z>o9?N@W zSUuzJd?MZiPRN!|x3R#@NhssSV~H?w)dIs7RhOtx2KZ+Sumzk?@Q<>oO_9?$P^Y(n sZOVdGD|WC;m5aT9n$z-!Xj&Ibu$H@oV`#`I#TAW5dvHSb39)eS2cO|o2><{9 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..76c39c7496e1168189c95a448250bedeb8f28f1e GIT binary patch literal 572 zcmah_%TB^T6g^W~3Z+oMw_ubVbYVY0;|4Wpg1XRPTn;d)CA1}_=uf#Zk(jvf1NQI#d%HiVXEBf8x%Jhn{mYnu>A4P(1ZRKRIJ4 zbbG@xN+|0vOjKYp97eI{%;QLQI({Mo=UMQ16fT_m)DwEb1MUe1=1OeMge8HcfQP&v zEr?(1x^8dCp!TB)^;rWy6xYjOB;q?hno*@Wh{k+2oaalCB$uH=m8;)u8DWFNV36(5eU0#!34F)!-a+JZai7m>A0NX^*(rAYw uh2mZ8k_ASo)!i z+Wwp7zG@``_R}B=l63*2R^KilkAj1uiyLqSraN)lKa4vZ>4%+`OoC42H_{IQ_b`+v zDt;ApgIy&cb{Ie8qKshyGm-~%Inub$+)CmgYOitBh>KB-30Nvp2PXpajjWc6k{~(p z`7Kage}iMziWtX)gPSgHVNziBIsnxcbYCdBt83d4sMh*(sc%!J&pVucxe-Ka^XQfEW+a9hR!pVLb-*$cV?GnW$XGiOcU$pE=apn+9#LQY#Ho7%mxTD?DKfjk9h zQv?<$;yNcNnQ~VpZ!dMrtnILtbu7apsx?mmDdl4AdPauk_hdJPl(rJt`tVvFrY05W zsV65;Y=uh3X<%`ya}>AK%YgkYosH58&j{vdE^;)t2CXzg^p)cw(L2o}?FCT6n4rcsn|N55%2W-v=9V$!-a z$%L6pRhpz>@Y@xYHT%3C z8#VHjv#!JIu(tD(=p1UXXqjS6qyQT+(V`~=hZOvxD; zkLsB+C(