-----------------------------------
|  Pour jouer:  java GoBomberman  |
-----------------------------------






Notes "techniques" sur le projets.


I - STRUCTURE

Nous avons tenter au mieux de diviser notre programme de la facon
la plus modulaire possible. Nous avons pu de ce fait travailler par
moment de facon paralelle, chacun testant son code de son cote.
Nous n'avons reunis les differentes parties qu'a la fin du
developpement.



II - IMPLEMENTATION

Nous avons 3 "familles" de classe:
  * les Sprites (Bomberman, Monstres, Bonus, Bombes, Flammes)
  * les Listes de Sprites
  * les classes "annexes" (Plan du Niveau, Moteur de Jeu,...)
C'est dans le Moteur de Jeu que sont appelees toutes les methodes
des autres classes, et sont definis les regles (deplacements,
colisions,mort)



III - CARACTERISTIQUES

Nous allons ici enumerer toutes les fonctionalites de notre
programme:

  * Les Sprites:
Tous derives de la classes Sprite, les deux sous-classes sont
les ItemBonus et les SpriteDeplacables
La methodes la plus importante de la classe Sprite est le test de
collision. Il est appele entre le bomberman et les monstres, et
entre les Sprites Deplacables (bomberman et Monstres) et les autres
Sprites (Bonus, Flammes et Bombes)
  * Les Sprites Deplacables:
Nous avons tenu a differencier les Sprites animes par l'ordinateur
de ceux diriges par les joueurs. Nous pourrions ainsi plus facilement
reutilser notre codes pour permettre a plusieurs joueurs humains de
jouer simultanement.
  * Les Listes
Tous les Sprites et le Niveau contiennent des listes de bombes,de
flammes, d'item et/ou de Sprite. Ces listes sont statiques et communes
ce qui evite par exemples d'avoir des listes a remettre a jour pour
chaque Sprite ou une remise a jour des listes de Bombes, pour les
Bomberman, les Monstres et le niveau. Les listes sont "partagees"
entre les classes.
  * Le Moteur de Jeu
Il initialise la partie en chargeant une zone de jeu, les graphismes,
et en creant les sprites. Ensuite il lance deux threads:
une pour l'affichage, l'autre pour les regles.
L'affichage se contente de dessiner tous les sprites a l'ecran.
Les regles sont constituees des deplacements, des collisions (avec un
mur, un bonus ou un SpriteMonstre), du decompte du temps avant explosion
des bombes, et des contions de Victoire ou de Defaite.
  * Le Plan du Niveau
C'est la zone de jeu. Sa taille est paramettrable. On peut generer des
niveaux aleatoires ou les charger d'un fichier ascii (ex: Level1)
  * Le Score
Le score est charge et enregistre de facon serialisable a chaque debut
et fin de partie. Quand on commence une partie le score du joueur est
charge si le joueur a deja jouer, il est cree a 0 s'il s'agit d'un
nouveau joueur.



IV - NOTES

Pour une plus grande evolutivite, nous avons entierement parametres
le programme (Taille des Niveau, Taille des Sprites, pourcentage de
chance de creer un Monstre ou un Mur Destructible sur une case libre,
nombre d'image represantant l'animation d'un sprite,...)

Nous avons tente de prevoir une suite au developpement du jeu.
Par exemple en implementant un deuxieme joueur humain (partageant le meme
clavier, (mais la gestion du clavier par Java ne permet pas bien que
deux personnes se ruent sur les touches en meme temps))  
On peut prevoir aussi un nouveau type de comportement pour les monstres.

L'inteligence des petits monstres est simple mais tres efficace. Ils se
contentent de se ballader tranquillement de facon aleatoire. Ils ne
cherchent pas specialement a se jeter sur un bomberman. Par contre ils
font tous pour se proteger des bombes, ils restent a distance ou hors du
champ d'explosion, et se cachent derriere les murs. S'ils se sentent pris
au piege, ils cherchent deseperement un ultime endroit pour se proteger,
plus loin. Pour pouvoir les abattre il faut ne leur laisser aucun replis
possible.

Pour rendre le programme plus agreable et conviviale nous avons placer
une image d'aceuil, une image d'aide et des images de fin choisis
aleatoirement en cas de victoire ou de defaite.

