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
8 changes: 8 additions & 0 deletions src/Ironbattle/Attacker.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package Ironbattle;

public interface Attacker {
void attack(Character target);



}
35 changes: 35 additions & 0 deletions src/Ironbattle/Character.java
Original file line number Diff line number Diff line change
@@ -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; }


}
53 changes: 53 additions & 0 deletions src/Ironbattle/Main.java
Original file line number Diff line number Diff line change
@@ -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());
}
}
}
45 changes: 45 additions & 0 deletions src/Ironbattle/Warrior.java
Original file line number Diff line number Diff line change
@@ -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;
}

}
48 changes: 48 additions & 0 deletions src/Ironbattle/Wizard.java
Original file line number Diff line number Diff line change
@@ -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;
}
}