Create Character #4

Merged
erns6604 merged 1 commits from npc into main 2025-10-14 14:42:41 +02:00
4 changed files with 43 additions and 28 deletions

View File

@ -0,0 +1,28 @@
public abstract class Character {
protected String name;
protected int health;
protected int level;
protected Position position;
public Character(String name) {
this.name = name;
this.health = 10;
this.level = 1;
}
public Character(String name, int level) {
this.name = name;
this.level = level;
}
public void setHealth(int i) {
this.health = i;
}
public boolean isAlive() {
return health > 0;
}
public abstract void spawn(int x, int y);
}

View File

@ -1,24 +1,13 @@
public class Player { public class Player extends Character {
private final String name;
private int health;
private int mana;
public Player(String name) { public Player(String name) {
this.name = name; super(name);
this.health = 100;
this.mana = 100;
} }
public String getName() {
return name;
}
public int getHealth() { @Override
return health; public void spawn(int x, int y) {
}
public int getMana() {
return mana;
} }
} }

View File

@ -0,0 +1 @@
public record Position(int x, int y) {}

View File

@ -7,23 +7,20 @@ class PlayerTest {
private Player defaultPlayer() { private Player defaultPlayer() {
return new Player("abc"); return new Player("abc");
} }
@Test @Test
void setNameOnCreation() { public void is_dead_if_health_is_zero() {
var p = defaultPlayer(); var p = defaultPlayer();
assertEquals("abc", p.getName(), "Player name should have been set"); p.setHealth(0);
assertFalse(p.isAlive());
} }
@Test @Test
void setHealthOnCreation() { public void can_change_position() {
var p = defaultPlayer(); var p = defaultPlayer();
assertEquals(100, p.getHealth(), "Player health should have been set"); assertEquals(new Position(0,0), p.getPosition());
p.moveTo(new Position(1,1));
assertEquals(new Position(1,1), p.getPosition());
} }
@Test
void setsManaOnCreation() {
var p = defaultPlayer();
assertEquals(100, p.getMana(), "Player mana should have been set");
}
} }