Sommaire
- Rappel de syntaxe Java
- Partie 1 (vous êtes ici)
- Partie 2
UTILISEZ ECLIPSE 4.4.2 (de préférence)
AVANT TOUT
Vu que le TP est assez long et complexe, ouvrez pas tout de suite Eclipse.
Prenez une feuille et un crayon et écrivez dessus d'abord. Imaginez les différentes classes, marquez les attributs, faites des schémas, etc.
Une fois que vous aurez toutes vos classes, vous pourrez passer au code. Comme ça si vous vous chiez dans votre conception objet ben vous aurez pas à refaire tout votre code.
Et même une fois que ça ça sera fait, NE FAITES PAS ENCORE DE MAIN. Pour l'instant on fait seulement des classes. Le main, on le fera en temps voulu.
oui, miguel préconise de commencer par le Main pour avoir "un fil conducteur", c'est tout à fait juste mais c'est une tactique qui n'est efficace que quand on sait bien faire les classes et tout. Donc pour quelqu'un qui connaît Java comme sa poche, oui c'est plus avisé de commencer par le Main. Mais pour notre niveau c'est beaucoup plus simple de commencer par les classes, puis d'ensuite faire le Main et de rajouter des fonctions à nos classes au fur et à mesure.
Faites vos classes, j'ai mis une liste plus loin avec la liste des classes que vous devriez avoir. Essayez de pas aller voir tout de suite pour pas vous auto-spoil. Et comme d'hab si vous avez des questions envoyez un mp.
Données du Problème :
La Table Ronde est composée d'un groupe de chevaliers au service du Roi Arthur chargé de mener la quête du Graal.
On a ici le choix entre :
- Faire une variable
ArrayList<Chevalier> tableRonde
- Faire une classe
TableRonde
contenant un attributArrayList<Chevalier> chevaliers
Chaque Chevalier comporte : (Chevalier sera une classe)
- Un nom permettant de l'identifier de manière unique.
- Un sac, vide initialement, permettant de ranger des objets collectés pendant sa recherche du Graal.
- On utilisera pour cela
ArrayList<Truc>
qui sert à faire des liste dynamiques, oùTruc
est le type des éléments qui seront dedans
- On utilisera pour cela
- Un niveau de vie. Sa valeur initiale sera un entier entre 0 (il n'a pas de vie) et 100.
Selon les légendes celtiques, le Graal est un fait composé des 4 Objets amenés par les Dieux. Ces 4 objets seraient l'épée Excalibur, la pierre de Fal Lial, la Lance de Lug et le Chaudron de la Connaissance.
Pendant la quête "aux quatre coins du monde" des 4 objets composant le Graal, un chevalier peut aussi trouver d'autres objets qui sont en fait des obstacles, tels que : des roches, des puits, des ronces.
Ainsi il y a deux sortes d'objets : les objets composant le "Graal" et les objets "Obstacle".
On aura donc une classe Objet
et deux classes héritant de Objet
: Graal
et Obstacle
Rappel : pour déclarer une classe B qui hérite de A, on fait :
public class B extends A {
...
}
Les objets "Graal" et les objets "Obstacle" ont tous une propriété permettant de modifier le niveau de vie du chevalier qui le trouve "aux quatre coins du monde". → attribut dans la classe Objet
En plus de cette propriété, les objets "Graal" ont un poids car ils sont censés être amenés par le chevalier qui les trouve. → attribut dans la classe Graal
uniquement (pas Objet
)
Aux quatre coins du monde
"Aux quatre coins du monde" est l'espace où se trouvent les objets ("Graal" et "Obstacle") et où peut aussi se trouver un chevalier en quête du Graal. C'est un espace carré composé d'un nombre fini d'emplacements.
On utilisera ici un tableau en 2D.
Rappel : les tableaux
Pour déclarer un tableau en 2 dimensions, on fait :
Truc[][] monTableau;
Et pour l'initialiser :
monTableau = new Truc[TAILLE_Y][TAILLE_X];
Ici, TAILLE_Y
et TAILLE_X
seront égales et vaudront 10.
Attention à bien différencier :
déclarer = ici je dis qu'il y aura un tableau (mais je sais pas quelle taille il fera)
initialiser = là où j'avais dit qu'il y aurait un tableau, je crée effectivement un tableau avec une taille que je définis
Pour résumer
Normalement là vous devriez avoir les classes et les attributs suivants :
- Objet
- nom (chaîne)
- modification de vie (nombre)
- Graal : hérite de Objet
- poids (nombre)
- Obstacle : hérite de Objet
- pas d'attributs supplémentaires
- Chevalier
- nom (chaîne)
- vie (nombre)
- sac (liste d'objets)
- QuatreCoins
- monde (tableau 2D d'Objets)