Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/homework-java-ironbattle.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions battle/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.ironhack.homework</groupId>
<artifactId>battle</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

</project>
5 changes: 5 additions & 0 deletions battle/src/main/java/org/ironhack/homework/Attacker.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.ironhack.homework;

public interface Attacker {
void attack(Character target);
}
46 changes: 46 additions & 0 deletions battle/src/main/java/org/ironhack/homework/BattleSimulator.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
33 changes: 33 additions & 0 deletions battle/src/main/java/org/ironhack/homework/Character.java
Original file line number Diff line number Diff line change
@@ -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; }
}
47 changes: 47 additions & 0 deletions battle/src/main/java/org/ironhack/homework/Warrior.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
46 changes: 46 additions & 0 deletions battle/src/main/java/org/ironhack/homework/Wizard.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.