Skip to content
This repository was archived by the owner on Jun 18, 2020. It is now read-only.

luzam/DrRob

Repository files navigation

README
Dr.Robotnik Mean Bean Machine Projet C++
V 1.0
Antoine Hoarau et Lucas Zamuner ROB4
//////////////////////////////////////////////////

1) Grandes lignes du projet

Nous avons tentŽ de reproduire le jeu SEGA Dr.Robotnik initialement prŽvu pour MŽgaDrive, en lÕadaptant pour plus de joueurs Humains et AI.

//////////////////////////////////////////////////

2) Lancement du programme

* Sans arguments : le jeu se lance avec une rŽsolution de 800*600 px.
* Avec arguments SCREEN_W SCREEN_H : le jeu se lance en rŽsolution personnalisŽe.
* Avec arguments 0 0 : le jeu se lance en plein Žcran, ˆ la rŽsolution du bureau.
//////////////////////////////////////////////////

3) Lancement dÕune partie 

* Sur lÕŽcran d'accueil : 
  - Echap quitte le programme proprement.
  - EntrŽe passe ˆ lÕŽcran suivant.
  - Dans les menus, backspace revient ˆ l'Žcran d'avant.
* Ecran choix du nombre de joueurs :
  - Il faut jouer avec les touches gauche et droite pour augmenter ou diminuer le nombre de joueurs Humains ou AI (haut et bas)
* Ecran start et controls : 
  - Des commandes sont attribuŽs par dŽfaut pour 4 joueurs max(haut bas gauche droite pour joueur 1, zqsd pour 2 etc)
  - On peut bien entendu choisir ses commandes persos par le menu commandes.

* LE JEU : 
  - Le but set de faire perdre les adversaires en remplissant leur ligne du milieu de blobs.
  - Pour cela, il faut effectuer des enchainements de 4 blobs de m�me couleur min pour envoyer des pierres chez l'adversaire.
  - La touche ECHAP quitte le jeu courant et revient au menu principal.
//////////////////////////////////////////////////

4) Le programme en detail

On commence par instancier un jeu drRob, que l'on lance avec go.
Il crŽe une interface graphique qui d'abord charge le menu et qui le redimensionne aux dimensions de l'Žcran ( pas l'inverse).
On dŽcide du nombre de joueurs humains, AI, des commandes etc.
On rentre alors dans la boucle infinie.
Une fois START lancŽ l'interface va faire tous les redimensionnements nŽcessaires :
* Chargement des images, redimensionnement par rapport ˆ la rŽsolution d'Žcran (fonctionne pour n joueurs)
* Calculs des positions des diffŽrents dashboards, des offsets pour la positions des ŽlŽments des joueurs..
Le jeu est alors lancŽ, on va donc faire une boucle sur le tableau de commande des joueurs, qui vont modifier la position ou le comportement du double blob courant.
Pour chaque dashbord on effectue un go : 
C'est un incrŽment de temps qui met ˆ jour tout le moteur physique (tourner les pi�ces , combo, pi�ce qui tombe etcÉ)
On blit le tout et on reboucle.

Les Ai sont soit easy (random), soit hard (essaye de mettre des couleurs ensemble).
//////////////////////////////////////////////////

5) Les points intŽressants

Tout d'abord, la dŽtection des zones de plus de 4 blobs a ŽtŽ un vrai challenge, nous for�ant a utiliser un algorithme complexe type k-means. Le moteur physique gŽrant les rotations, les combos etc aura aussi ŽtŽ assez complexe a mettre en oeuvre.
Concernant l'interface, nous lisions au dŽbut dans un fichier image redimensionnŽ des parties de l'image. Il s'avŽra que suite au redimensionnement, des pixels se dŽcalaient, donnant un rendu assez moche (un pixel en trop ou manquant).
Nous avons donc repris du dŽbut le sprite, calculŽ la taille blob resizŽ qui tombe juste, puis allouŽ un vecteur de surfaces pour chaque blobs, de chaque couleur. Les rŽsultats ont ŽtŽ bien meilleurs.
Par manque de temps, nous n'avons pas pu consacrer beaucoup de temps ˆ l'IA, qui est nŽanmoins tr�s intŽressante.
Globalement, ce projet Žtait un vrai dŽfi, bien plus complexe que le tŽtris, et il nous aurait fallut quelques semaines en plus pour arriver ˆ un rŽsultat parfait.
//////////////////////////////////////////////////

6) Ce qui manque

* UN MAKEFILE : en effet, nous n'avons pas rŽussi ˆ extraire un makefile du projet Codeblocks. Le projet compile tr�s bien sous codeblocks Linux(Fac) et Windows(chez nous), mais cmake n'a pas fonctionnŽ jusqu'au bout, car nous n'avons pas pu l'installer sur les pc de la fac(trop lourd).
* Le valgrind complet : nous avons essayŽ de libŽrer la mŽmoire au maximum, mais certainement des erreurs subsistent. Le ssh Žtant trop lent, nous n'avons pas pu gŽrer a distance (sur les pc de la fac) les probl�mes de fuite mŽmoire.

//////////////////////////////////////////////////




About

Dr Rob

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •