diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/.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/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..71e2ee5 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..177c90b --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/homework-java-ironbattle.iml b/.idea/homework-java-ironbattle.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/homework-java-ironbattle.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..348a215 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..54cb84e --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/battle/pom.xml b/battle/pom.xml new file mode 100644 index 0000000..7e0a47f --- /dev/null +++ b/battle/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + org.ironhack.homework + battle + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/battle/src/main/java/org/ironhack/homework/Attacker.java b/battle/src/main/java/org/ironhack/homework/Attacker.java new file mode 100644 index 0000000..03bb730 --- /dev/null +++ b/battle/src/main/java/org/ironhack/homework/Attacker.java @@ -0,0 +1,5 @@ +package org.ironhack.homework; + +public interface Attacker { + void attack(Character target); +} diff --git a/battle/src/main/java/org/ironhack/homework/BattleSimulator.java b/battle/src/main/java/org/ironhack/homework/BattleSimulator.java new file mode 100644 index 0000000..36dcb34 --- /dev/null +++ b/battle/src/main/java/org/ironhack/homework/BattleSimulator.java @@ -0,0 +1,46 @@ +package org.ironhack.homework; + +import java.util.Scanner; + +public class BattleSimulator { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + + System.out.println("Enter Warrior name:"); + String wName = sc.nextLine(); + Warrior warrior = new Warrior(wName, 150, 30, 8); + + System.out.println("Enter Wizard name:"); + String wizName = sc.nextLine(); + Wizard wizard = new Wizard(wizName, 80, 30, 15); + + boolean tie; + do { + tie = false; + warrior.setHp(150); + wizard.setHp(80); + warrior.setIsAlive(true); + wizard.setIsAlive(true); + + while (warrior.getIsAlive() && wizard.getIsAlive()) { + warrior.attack(wizard); + wizard.attack(warrior); + + System.out.println(warrior.getName() + " HP: " + warrior.getHp()); + System.out.println(wizard.getName() + " HP: " + wizard.getHp()); + System.out.println("-----------------------"); + } + + if (warrior.getIsAlive() && !wizard.getIsAlive()) { + System.out.println(warrior.getName() + " wins!"); + } else if (!warrior.getIsAlive() && wizard.getIsAlive()) { + System.out.println(wizard.getName() + " wins!"); + } else { + System.out.println("It's a tie! Restarting battle..."); + tie = true; + } + } while (tie); + + sc.close(); + } +} \ No newline at end of file diff --git a/battle/src/main/java/org/ironhack/homework/Character.java b/battle/src/main/java/org/ironhack/homework/Character.java new file mode 100644 index 0000000..9779d53 --- /dev/null +++ b/battle/src/main/java/org/ironhack/homework/Character.java @@ -0,0 +1,33 @@ +package org.ironhack.homework; + +import java.util.UUID; + +public abstract class Character { + private String id; + private String name; + private int hp; + private boolean isAlive; + + public Character(String name, int hp) { + this.id = UUID.randomUUID().toString(); + this.name = name; + this.hp = hp; + this.isAlive = true; + } + + + public String getId() { return id; } + public String getName() { return name; } + public int getHp() { return hp; } + public boolean getIsAlive() { return isAlive; } + + + public void setName(String name) { this.name = name; } + + public void setHp(int hp) { + this.hp = Math.max(hp, 0); + if (this.hp == 0) this.isAlive = false; + } + + public void setIsAlive(boolean isAlive) { this.isAlive = isAlive; } +} \ No newline at end of file diff --git a/battle/src/main/java/org/ironhack/homework/Warrior.java b/battle/src/main/java/org/ironhack/homework/Warrior.java new file mode 100644 index 0000000..7705690 --- /dev/null +++ b/battle/src/main/java/org/ironhack/homework/Warrior.java @@ -0,0 +1,47 @@ +package org.ironhack.homework; + +import java.util.Random; + +public class Warrior extends Character implements Attacker { + private int stamina; + private int strength; + private Random rand = new Random(); + + public Warrior(String name, int hp, int stamina, int strength) { + super(name, hp); + this.stamina = stamina; + this.strength = strength; + } + + public int getStamina() { return stamina; } + public void setStamina(int stamina) { this.stamina = stamina; } + public int getStrength() { return strength; } + public void setStrength(int strength) { this.strength = strength; } + + @Override + public void attack(Character target) { + int damage = 0; + boolean heavy = rand.nextBoolean(); + + if (heavy && stamina >= 5) { + damage = strength; + stamina -= 5; + System.out.println(getName() + " performs a Heavy Attack causing " + damage + " damage!"); + } else if (!heavy && stamina > 0) { + damage = strength / 2; + stamina += 1; + System.out.println(getName() + " performs a Weak Attack causing " + damage + " damage!"); + } else if (stamina > 0) { + + damage = strength / 2; + stamina += 1; + System.out.println(getName() + " performs a Weak Attack causing " + damage + " damage!"); + } else { + damage = 0; + stamina += 2; + System.out.println(getName() + " is too tired to attack! Recovering stamina..."); + } + + target.setHp(target.getHp() - damage); + } +} \ No newline at end of file diff --git a/battle/src/main/java/org/ironhack/homework/Wizard.java b/battle/src/main/java/org/ironhack/homework/Wizard.java new file mode 100644 index 0000000..a8cfddd --- /dev/null +++ b/battle/src/main/java/org/ironhack/homework/Wizard.java @@ -0,0 +1,46 @@ +package org.ironhack.homework; + +import java.util.Random; + +public class Wizard extends Character implements Attacker { + private int mana; + private int intelligence; + private Random rand = new Random(); + + public Wizard(String name, int hp, int mana, int intelligence) { + super(name, hp); + this.mana = mana; + this.intelligence = intelligence; + } + + public int getMana() { return mana; } + public void setMana(int mana) { this.mana = mana; } + public int getIntelligence() { return intelligence; } + public void setIntelligence(int intelligence) { this.intelligence = intelligence; } + + @Override + public void attack(Character target) { + int damage = 0; + boolean fireball = rand.nextBoolean(); + + if (fireball && mana >= 5) { + damage = intelligence; + mana -= 5; + System.out.println(getName() + " casts Fireball causing " + damage + " damage!"); + } else if (!fireball && mana > 0) { + damage = 2; + mana += 1; + System.out.println(getName() + " hits with Staff causing " + damage + " damage!"); + } else if (mana > 0) { + damage = 2; + mana += 1; + System.out.println(getName() + " hits with Staff causing " + damage + " damage!"); + } else { + damage = 0; + mana += 2; + System.out.println(getName() + " is out of mana! Recovering..."); + } + + target.setHp(target.getHp() - damage); + } +} \ No newline at end of file diff --git a/battle/target/classes/org/ironhack/homework/Attacker.class b/battle/target/classes/org/ironhack/homework/Attacker.class new file mode 100644 index 0000000..c570da7 Binary files /dev/null and b/battle/target/classes/org/ironhack/homework/Attacker.class differ diff --git a/battle/target/classes/org/ironhack/homework/BattleSimulator.class b/battle/target/classes/org/ironhack/homework/BattleSimulator.class new file mode 100644 index 0000000..0f7a802 Binary files /dev/null and b/battle/target/classes/org/ironhack/homework/BattleSimulator.class differ diff --git a/battle/target/classes/org/ironhack/homework/Character.class b/battle/target/classes/org/ironhack/homework/Character.class new file mode 100644 index 0000000..90434bd Binary files /dev/null and b/battle/target/classes/org/ironhack/homework/Character.class differ diff --git a/battle/target/classes/org/ironhack/homework/Warrior.class b/battle/target/classes/org/ironhack/homework/Warrior.class new file mode 100644 index 0000000..4b81a0d Binary files /dev/null and b/battle/target/classes/org/ironhack/homework/Warrior.class differ diff --git a/battle/target/classes/org/ironhack/homework/Wizard.class b/battle/target/classes/org/ironhack/homework/Wizard.class new file mode 100644 index 0000000..1af02ca Binary files /dev/null and b/battle/target/classes/org/ironhack/homework/Wizard.class differ