Le choc des titans, orienté objet
Etapes
Mise en place
- Créer un nouveau projet Android dans Eclipse, avec une activity "MainActivity".
- Modifier le layout pour n'avoir qu'un TextView dans un LinearLayout.
Personnage
- Créer la classe Personnage, ayant comme membres "vie" (entier) et "nom" (chaine de caractere).
- Ajouter la méthode "estVivant" qui renverra "true" si les points de vie du personnage sont supérieurs à 0, false sinon.
- Ajouter la méthode "recoitAttaque" qui fait perdre au personnage le nombre de points de vie passés en paramètre.
- Ajouter la méthode "getDegatAttaque" qui renvoie le nombre de dégat faits par le personnage (entre 1 et 6)
Combat
- Créer la classe Combat avec 2 membres p1 et p2 de type Personnage.
- Créer la méthode commenceCombat, qui effectue l'algo principal du jeu, avec les 2 personnages.
- Creer l'interface CombatEventListener, avec les méthodes debutCombat, debutTourCombat, finCombatGagnant, finCombatExAquo, prenant chacunes 2 personnages en parametre.
- Ajouter un membre "listener" de type CombatEventListener à la classe Combat.
- Modifier la méthode "commenceCombat" pour intégrer les appels au listener, aux bons moments.
MainActivity
- Ajouter un membre nommé "label" de type TextView dans le MainActivity
- Modifier le MainActivity pour récuperer le textView du layout et initialiser le membre "label".
- Instancier et initialiser les 2 personnages dans la méthode "onCreate".
- Instancier et initialiser une instance de l'objet Combat, en lui passant les 2 personnages ainsi que le mainActivity en tant que listener.
- Implementer l'interface CombatEventListener sur la classe MainActivity en affichant des textes à l'écran via le membre label.
Executez et debuggez !
Améliorations
- Créer une nouvelle classe avec un membre de type TextView, implementant CombatEventListener pour soulager MainActivity de la responsabilité de l'affichage des messages.
- Rendre la classe Personnage abstraite, et créer 2 classes enfants : Joueur et Boss, qui redefinissent la méthode "getDegatAttaque". Le Boss fait plus de dégat que le Joueur.
Annexe :
Algo principal
- A chaque tour, les 2 personnages s'attaquent « automatiquement » et font perdre à l'autre entre 1 et 6 points de vie (tirés au hasard).
- A la fin du tour, si au moins un personnage n'a plus de points de vie, la partie s’arrête.
- Si les 2 personnages n'ont plus de vie, ils sont déclarés " ex aequo ". Sinon, on affiche le nom du personnage vainqueur.
Un nombre au hasard entre 1 et 6
nt hasard = (int) (Math.round(Math.random() * 5) + 1);
Texte d'un TextView
String monText = label.getText(); //Recuperer le texte courant label.setText("Texte"); //Definir un nouveau texte label.setText(label.getText() + "Texte"); //Concatener un nouveau texte