From 30a01829975bc4a9fb4917f407209b37e5baf8c6 Mon Sep 17 00:00:00 2001 From: Anar Vali Date: Fri, 27 Feb 2026 01:20:36 -0800 Subject: [PATCH] Homework-1 --- src/Ironbattle/Attacker.java | 8 ++++++ src/Ironbattle/Character.java | 35 +++++++++++++++++++++++ src/Ironbattle/Main.java | 53 +++++++++++++++++++++++++++++++++++ src/Ironbattle/Warrior.java | 45 +++++++++++++++++++++++++++++ src/Ironbattle/Wizard.java | 48 +++++++++++++++++++++++++++++++ 5 files changed, 189 insertions(+) create mode 100644 src/Ironbattle/Attacker.java create mode 100644 src/Ironbattle/Character.java create mode 100644 src/Ironbattle/Main.java create mode 100644 src/Ironbattle/Warrior.java create mode 100644 src/Ironbattle/Wizard.java diff --git a/src/Ironbattle/Attacker.java b/src/Ironbattle/Attacker.java new file mode 100644 index 0000000..bc8126b --- /dev/null +++ b/src/Ironbattle/Attacker.java @@ -0,0 +1,8 @@ +package Ironbattle; + +public interface Attacker { + void attack(Character target); + + + +} diff --git a/src/Ironbattle/Character.java b/src/Ironbattle/Character.java new file mode 100644 index 0000000..9110445 --- /dev/null +++ b/src/Ironbattle/Character.java @@ -0,0 +1,35 @@ +package Ironbattle; +import java.util.UUID; + + + public abstract class Character implements Attacker{ + 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 void setId(String id) {this.id = id;} + + public String getName() {return name;} + public void setName(String name) {this.name= name; } + + public int getHp() {return hp; } + public void setHp(int hp) { + this.hp = hp; + if (this.hp <= 0) { + this.hp = 0; + this.isAlive = false; + } + } + public boolean isAlive(){return isAlive; } + public void setAlive(boolean alive) {isAlive = alive; } + + + } diff --git a/src/Ironbattle/Main.java b/src/Ironbattle/Main.java new file mode 100644 index 0000000..5f334c9 --- /dev/null +++ b/src/Ironbattle/Main.java @@ -0,0 +1,53 @@ +package Ironbattle; + +import java.util.Random; +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + Random random = new Random(); + + System.out.println("=== Welcome to IronBattle ==="); + + // 1. Setup Fighter 1 (Manual Name, Random Stats) + System.out.print("Enter name for Fighter 1 (Warrior): "); + String name1 = scanner.nextLine(); + // Warrior HP: 100-200 | Stamina: 10-50 | Strength: 1-10 + Warrior p1 = new Warrior(name1, random.nextInt(101) + 100, random.nextInt(41) + 10, random.nextInt(10) + 1); + + // 2. Setup Fighter 2 (Manual Name, Random Stats) + System.out.print("Enter name for Fighter 2 (Wizard): "); + String name2 = scanner.nextLine(); + // Wizard HP: 50-100 | Mana: 10-50 | Intelligence: 1-50 + Wizard p2 = new Wizard(name2, random.nextInt(51) + 50, random.nextInt(41) + 10, random.nextInt(50) + 1); + + System.out.println("\n--- BATTLE START ---"); + + // 3. Battle Loop + int round = 1; + while (p1.isAlive() && p2.isAlive()) { + System.out.println("\nROUND " + round); + + // Both attack at the same time + p1.attack(p2); + p2.attack(p1); + + System.out.println(p1.getName() + " HP: " + p1.getHp()); + System.out.println(p2.getName() + " HP: " + p2.getHp()); + + round++; + } + + // 4. Result Logic + System.out.println("\n--- BATTLE OVER ---"); + if (!p1.isAlive() && !p2.isAlive()) { + System.out.println("It's a TIE! Restarting battle..."); + main(args); // Recursive call to restart + } else if (p1.isAlive()) { + System.out.println("WINNER: " + p1.getName()); + } else { + System.out.println("WINNER: " + p2.getName()); + } + } +} \ No newline at end of file diff --git a/src/Ironbattle/Warrior.java b/src/Ironbattle/Warrior.java new file mode 100644 index 0000000..061f775 --- /dev/null +++ b/src/Ironbattle/Warrior.java @@ -0,0 +1,45 @@ +package Ironbattle; +import java.util.Random; + +public class Warrior extends Character{ + private int stamina; + private int strength; + + public Warrior(String name,int hp, int stamina, int strength) { + super(name, hp); + this.stamina = stamina; + this.strength = strength; + } + @Override + public void attack(Character target){ + Random random =new Random(); + int attackType =random.nextInt(2); + if (attackType ==0 && this.stamina >=5){ + //Heavy attack + target.setHp(target.getHp() - this.strength); + this.stamina -=5; + System.out.println(getName() + "used heavy Attack for" + this.strength + "damage."); + }else if (this.stamina >=1 ){ + // weak atack + int damage = this.strength / 2; + target.setHp(target.getHp() - damage); + this.stamina +=1; + System.out.println(getName() + " used weak attac fro " + damage + "damage."); + }else { + //no stemina + }this.stamina += 2; + System.out.println(getName() + "is exhausted adn recovered 2 stamina."); + + } + 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; + } + +} diff --git a/src/Ironbattle/Wizard.java b/src/Ironbattle/Wizard.java new file mode 100644 index 0000000..7e92d35 --- /dev/null +++ b/src/Ironbattle/Wizard.java @@ -0,0 +1,48 @@ +package Ironbattle; +import java.util.Random; + +public class Wizard extends Character{ + private int mana; + private int intelligence; + + public Wizard(String name, int hp, int mana, int intelligence){ + super(name, hp); + this.mana = mana; + this.intelligence =intelligence; + } + @Override + public void attack(Character target){ + Random random = new Random(); + int attackType =random.nextInt(2); + + if (attackType == 0 && this.mana >=5){ + //firebal + target.setHp(target.getHp() - this.intelligence ); + this.mana -= 5; + System.out.println(getName() + "cast ireball fro " + this.intelligence + "damage."); + }else if( this.mana >= 1){ + //staff + int damage = 2 ; + target.setHp(target.getHp() - damage); + this.mana += 1; + System.out.println(getName() + " mused Staff hit fro " + damage + "damage."); + }else{ + //-no mana + this.mana +=2; + System.out.print(getName() + "is out of mana and recovered 2 points."); + + } + } + public int getMana (){ + return mana; + } + public void detMana (int mana){ + this.mana = mana; + } + public int getIntelligence (){ + return intelligence; + } + public void setIntelligence(int intelligence){ + this.intelligence = intelligence; + } +}