wiki:InsiaProgPerlProjetBomberRoadmap

Projet Perl Bomberman

Projet Perl - Bomberman réseau

Roadmap

Attention: la date de fin de projet est fixée au vendredi 1er juin, 23h59. J'effectuerai une copie de vos dépôts subversion qui feront office de rendu.

1. Interface client

La syntaxe générale du programme sera la suivante:

$ ./bomberman.pl <serveur> <nom joueur>

2. Connexion serveur

Le programme se connecte immédiatement au serveur, présente son joueur et reporte toute erreur qui survient en s'arrêtant.

3. Configuration du plateau

Le programme reçoit la configuration du plateau (nom, dimensions, description) fournie par le serveur, la stocke dans une structure de donnée type %linfo/@level (cf. source:/insia/perl/bomberman/part1.pl). Il affiche le contenu de ces structures dans la console afin de vérifier qu'elles sont cohérentes.

4. Construction du plateau

Le plateau doit être construit dans une "surface" SDL intermédiaire à l'aide de la description du tableau et des éléments de base fournis sous forme PNG (brique, mur, sol). Cette surface sera modifiée occasionnellement au cours du jeu (destructions de briques), et surtout copiée dans la fenêtre à chaque rafraîchissement.

Note: si vous obtenez un plateau "rouge", vérifiez que votre "surface" est du même format que la fenêtre d'affichage (cf. source:/insia/perl/bomberman/surface.pl et SDL::Surface->display_format()).

5. Boucle d'événement

Vous devez implémenter une boucle d'événement non-bloquante (donc utilisation de SDL::Event->poll() et IO::Socket->blocking(0)), temporisée pour maîtriser la fréquence d'affichage des images et donc la vitesse de vos animations (calez-vous sur 50 images par seconde).

Vous devrez savoir consulter:

  • l'état du clavier à l'aide de SDL::GetKeyState()
  • la présence de messages réseau envoyés par le serveur

6. Gestion clavier

Vous devrez transformer les ordres du clavier en messages adéquats à envoyer vers le serveur:

  • Flèches: déplacer le joueur
  • Espace: poser une bombe
  • Esc: quitter le jeu (une simple déconnexion suffit)

7. Gestion de l'état du jeu

Vous devrez réagir aux messages envoyés par le serveur:

  • Apparition/disparition/déplacement des joueurs, et donc en particulier maintenir une liste des joueurs présent et de leur dernier état connu (position, direction)
  • Apparition/disparition des bombes, et donc maintenir une liste des bombes amorcées
  • Disparition de brique, à appliquer sur la surface de votre plateau

8. Affichage des élémenents de jeu

A l'aide des états maintenus et mis à jour dans la partie 7, positionnez sur votre plateau (et optionnellement animez) tous les éléments de jeu, à savoir les joueurs et les bombes - et ce bien sûr à chaque rafraîchissement d'image.

Last modified 13 years ago Last modified on May 24, 2007, 1:28:12 PM