diff --git a/src/main/java/re/forestier/edu/rpg/Goblin.java b/src/main/java/re/forestier/edu/rpg/Goblin.java new file mode 100644 index 0000000000000000000000000000000000000000..4ef5e07fb81b47931612007d6d55abac18dc23d5 --- /dev/null +++ b/src/main/java/re/forestier/edu/rpg/Goblin.java @@ -0,0 +1,44 @@ +package re.forestier.edu.rpg; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class Goblin extends Player { + + public Goblin (String playerName, String avatar_name, int money, ArrayList<String> inventory) { + super(playerName, avatar_name, money, inventory); + levelUp(); + } + + @Override + protected void levelUp() { + super.levelUp(); + final List<Map<String, Integer>> ADVENTURER_ABILITIES = List.of( + Map.of("INT", 2, "ATK", 2, "ALC", 1), // Niveau 1 + Map.of("ATK", 3, "ALC", 4), // Niveau 2 + Map.of("VIS", 1), // Niveau 3 + Map.of("DEF", 1), // Niveau 4 + Map.of("ATK", 4, "DEF", 2) // Niveau 5 + ); + + if (getLevel() <= ADVENTURER_ABILITIES.size()) { + Map<String, Integer> newAbilities = ADVENTURER_ABILITIES.get(getLevel() - 1); + abilities.putAll(newAbilities); // Remplace ou ajoute les stats + + } + } + + @Override + public void majFinDeTour() { + super.majFinDeTour(); + + if (currentHealthPoints < healthPoints / 2) { + currentHealthPoints +=1; + } + + super.maxHealth(); + } + +} + diff --git a/src/test/java/re/forestier/edu/UnitTests.java b/src/test/java/re/forestier/edu/UnitTests.java index ad22b741c2f54b0dc472b677a2676a8285c29672..0ccccf85c244ecc49fc78c61ed2fc768d91d24f5 100644 --- a/src/test/java/re/forestier/edu/UnitTests.java +++ b/src/test/java/re/forestier/edu/UnitTests.java @@ -186,4 +186,26 @@ public class UnitTests { assertThat(player.abilities.get("ATK"), is(4)); } + @Test + @DisplayName("Test Goblin class") + void testGoblin() { + Goblin player = new Goblin("Florian", "Gnognak le Barbare", 200, new ArrayList<>()); + player.addXp(500); + assertThat(player.level, is(7)); + assertThat(player.abilities.get("ATK"), is(4)); + } + + @Test + @DisplayName("Test Goblin End of Turn") + void testGoblinEndOfTurn() { + Goblin player = new Goblin("Florian", "Gnognak le Barbare", 200, new ArrayList<>()); + player.currentHealthPoints = 49; + player.healthPoints = 100; + player.majFinDeTour(); + assertThat(player.currentHealthPoints, is(50)); + + player.majFinDeTour(); + assertThat(player.currentHealthPoints, is(50)); + } + }