Programmation Objet C++ avancé (M1 PDCS)

 
Références bibliographiques

 
The C++ programming language, Bjarne Stroustrup
The C++ primer, Stanley Lipmann

 
Projet de programmation

2021: Course au trésor dans un labyrinthe hanté par des robots hostiles

      Enoncé

Exemple de labyrinthe

Voila un exemple de labyrinthe.

Prototype pour Linux, MacOSX et Windows

Vous trouverez dans l'archive labh-proto-fltk.tgz le prototype du jeu. Ce prototype utilise la toolkit graphique FLTK (https://www.fltk.org) qui fonctionne sous les trois systèmes principaux. Une version pré-compilée est fournie dans les répertoires fltk-1.4-linux, fltk-1.4-macosx et fltk-1.4-windows.

Cette version, une fois décompressée comporte les fichiers suivants:

	Chasseur.cc      Labyrinthe.cc   OpenGL-macosx.o   fltk-1.4-windows/  textures/
	Chasseur.h       Labyrinthe.h    OpenGL-windows.o  fmod/
	Environnement.h  Makefile-proto  Sound.h           labyrinthe.txt
	FireBall.h       Mover.h         fltk-1.4-linux/   modeles/
	Gardien.h        OpenGL-linux.o  fltk-1.4-macosx/  sons/

  • Attention: les fichiers Environnement.h, Mover.h, FireBall.h, Sound.h ne doivent PAS être modifiés!
  • Gardien.h, Chasseur.h, Chasseur.cpp, Labyrinthe.h et Labyrinthe.cpp qui sont des exemples et que vous devez réécrire en vous inspirant de ceux-là!
  • Les répertoires sons, textures et modeles contiennent respectivement les sons (fichiers .wav ou .mp3) les images des murs, affiches etc. (fichiers .jpg ou .gif), et les modèles de gardiens (fichiers .md2 et .jpg).

    Ces répertoires sont déjà pré-remplis avec des sons, images et personnages. Le code fourni en exemple ainsi que celui dont vous n'avez pas les sources (OpenGL<systeme>.o) cherchent ces fichiers dans ces répertoires.

  • Les fichiers OpenGL<systeme>.o contiennent l'interface graphique (dont les sources ne sont pas fournis)
  • La bibliothèque FMOD est utilisée pour le son sous Linux et MacOSX (elle est inutile sous Windows, qui possède les fonctionnalités de son de façon intégrée).

    Le fichier Makefile-proto contient tout ce qu'il faut pour compiler le prototype avec g++ sous Linux et MacOSX et avec MinGW-w64 sous Windows, que vous pouvez obtenir à l'URL:

    	https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe/download
    
    ou bien récupérer directement l'installateur ici: mingw-w64-install.exe.

    Vous aurez aussi besoin de la commande make que vous pourrez télécharger à l'URL:

    	http://gnuwin32.sourceforge.net/packages/make.htm
    
    Cliquez sur le lien Setup qui est à droite de "Complete package, except sources" (premier lien de Download) qui vous permettra de récupérer un installateur.

    Vous pouvez plus simplement récupérer directement l'installateur ici: make-3.81.exe.

    Une fois mingw et make installés, pensez à mettre à jour la variable d'environnement PATH pour qu'ils soient facilement retrouvés par le shell: (deux dernières lignes)

    Pour compiler, quel que soit le système, il vous suffira de dire dans un terminal la commande:

    	make -f Makefile-proto
    
    Ce makefile détermine automatiquement le type de votre système. Vous obtiendrez l'exécutable labh sous Linux et MacOSX ou labh.exe sous Windows.

    Quelques fonctions utiles

  • void partie_terminee (bool)

    Appeler cette fonction avec 'true' si le joueur a gagne et 'false' s'il a perdu. Dans les deux cas cela invalidera la possibilité de tir pour le chasseur et cela affichera le message 'You Win!' ou 'You Lose!!' en gros sur la fenêtre.

  • void message (char* format, ...)

    permet d'afficher un message en haut à gauche de la fenêtre. Cette fonction est du type 'printf', à nombre variable d'arguments de types quelconques.

    message ("Nombre de gardiens restants: %d", nb_gardiens);
              // affiche le nombre de gardiens.
    ...
    message (""); // efface le message précédent.
    Le premier argument a la même syntaxe que pour la fonction 'printf' (faire un 'man printf' pour plus de précisions.

  • Le système sonore permet de contrôler le volume et la position stéréophonique d'un son. Pour cela la fonction Sound::play a deux arguments (optionnels):

    void Sound::play (float volume, float pan)

    'volume' est un nombre entre 0 et 1 (plus c'est grand, plus c'est sonore) 'pan' est nombre entre 0 (gauche) et 1 (droite).

  • Quelques modèles de personnages pour vos gardiens

  • Marvin: Marvin.md2 et Marvin.jpg
  • Potator: Potator.md2 et Potator.jpg
  • Droid: Droid.md2 et Droid.jpg
  • Squelette: Squelette.md2 et Squelette.jpg
  • drfreak: drfreak.md2 et drfreak.jpg
  • Blade: Blade.md2 et Blade.jpg
  • Lezard: Lezard.md2 et Lezard.jpg
  • Samourai: Samourai.md2 et Samourai.jpg
  • Serpent: Serpent.md2 et Serpent.jpg
  • Bon courage - Patrick Amar