====== TP de rattrapage 2017-2018, 4ETI ======
===== Le démineur =====
==== Objectif ====
L'objectif du TP est d'améliorer le code d'un jeu multijoueurs ressemblant au démineur.
Il s'agit d'ajouter les fonctionnalités suivantes au code donné:
- corrections du code: :!:déjà réalisé dans les sources données
-ajout de vie pour chaque joueur;
- création d'une classe DemineVert qui démine la colonne
- création d'une case de type "AjoutVie" qui se comporte comme Info, mais est dessinée en orange et ajoute une vie au joueur qui l'a jouée.
Les sources du programme de base sont données (inutile de les coder).
=== Récupération des sources ===
- téléchargez les sources, sujet du DS et correction du {{ :java:tpr:correction.tar.gz |programme demineur}}
- créez un projet sous Eclipse
- exécutez le programme et étudiez son fonctionnement
=== Correction du code ===
Il y a des erreurs dans le code concernant la représentation en ligne et colonne: que se passe-t-il si vous demandez la création d'un jeu avec un plateau de 3 lignes et deux colonnes?
Pourquoi y a-t-il ce problème?
Corrigez-le.
:!:Il y avait une inversion entre nombre de colonne et nombre de lignes dans le code. Le code donné corrige déjà le problème.
=== Ajout de DemineVert ===
- Passez la classe Demine en classe abstraite
- Créez une classe DemineVert et une classe Demine Hor
- Modifiez les méthodes processAction uniquement dans DemineVert et DemineHor
- Affichage: modifiez les méthodes d'affichage via toString: afficher un "V" pour DemineVert et un "H" pour DemineHor
- pensez à mettre à jour la Map de probabilité
* récupérer le numéro de colonne
* itérer sur chaque ligne de la liste de cases (avec un itérateur si vous le souhaitez)
* chaque élément correspond à une autre arraylist qui représente une ligne du plateau
* accéder au c-ième élément de cette liste (colonne) et procéder aux mêmes type de test que pour DemineHor
=== Case AjoutVie ===
Prenez en compte cette fonctionnalité.
Cela signifie qu'un joueur qui joue une case AjoutVie ne perdra pas si il joue une mine par la suite.
Il va donc falloir d'une part ajouter le type de Case, d'autre part modifier le comportement de Mine.
Le plus simple est de disposer d'un tableau de joueur qui contient le nombre de vie d'un joueur.
Si ce nombre arrive à 0, le joueur a perdu.
==== Autres sujets à traiter pour le rattrapage ====
- [[java:horloge|l'horloge]]
- [[java:moutons|les moutons]]
- [[java:abstract|le mot-clef abstract]]