Créer une classe abstraite Monster avec les attributs :
- name (String)
- damage (int)
- life (int)
- type (String)
Créer un constructeur permettant d'initialiser ses attributs, sauf type qui aura la valeur "Normal" par défaut.
Ajouter une méthode instanciée takeHit, qui prend une instance de monstre adverse en argument : l'attribut damage du monstre adverse doit être soustrait à l'attribut life de l'instance en cours.
De plus, la méthode doit afficher "{name} has {life} points remaining." si le nombre de point de vie est supérieur à zéro, ou "{name} is KO!" sinon.
Créer des classes FireMonster, GrassMonster, WaterMonster héritant de Monster.
Leur ajouter un constructeur héritant du parent, qui modifiera la valeur de l'attribut type afin d'y stocker "fire", "grass" ou "water" selon les cas.
Redéfinir la méthode takeHit afin de modifier les dégâts infligés selon la valeur de l'attribut type des deux monstres :
- "fire" -> "grass", "grass" -> "water", "water" -> "fire" :
damagex 2 - "grass" -> "fire", "water" -> "grass", "fire" -> "water" :
damage/ 2
Créer une classe Arena avec une méthode main().
Permettre au joueur de sélectionner un monstre parmi une liste et de choisir le monstre adverse aléatoirement. Les faire combattre jusqu’à ce qu’un des deux soit KO.
Vous pouvez par exemple ajouter plus de types, ainsi que des attaques spéciales selon les types de monstres.
Toute autre idée d'amélioration du jeu sera bienvenue, mais uniquement quand tout le reste fonctionne déjà !