Niveau.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifndef NIVEAU_H_INCLUDED
  2. #define NIVEAU_H_INCLUDED
  3. /**
  4. Projet: PacMen
  5. Programmeur: Jovian Hersemeule
  6. Date de dernière modification: 7 fevrier 2014
  7. Objet: ajout attribut m_nomFichier, le constructeur créé un niveau MEME si fichier absent + fonction reset
  8. Prochaine étape:
  9. */
  10. #include <iostream>
  11. #include <fstream>
  12. #include <string>
  13. #include <SDL/SDL.h>
  14. #undef main
  15. #define LG_BLOC 30
  16. #define LG_TABL 20
  17. enum axe {Y=0,X=1};
  18. enum bloc {RIEN=0,MUR=1,PLAQUE=2,SPAWN_ALLIE=3,SPAWN_PHANTOM=4};
  19. enum item {VIDE=0,STEACK=1,TONNEAU=2};
  20. class Niveau
  21. {
  22. public:
  23. Niveau();//Niveau vide
  24. Niveau(std::string nomFichier, Uint16 fraction = 0);//Appelle automatiquement creer()
  25. ~Niveau();
  26. //Fonctions générales
  27. int peindreFont(Uint16 fraction);
  28. bool creer(std::string nomFichier, Uint16 fraction = 0);//Charge un niveau
  29. void afficher(SDL_Surface* support, bool hideItem=0);//Coller les surfaces de terrain (et les items si besoin)
  30. //Fonctions de jeu
  31. void remplirItems();//Pose les steaks par terre
  32. short typeBloc(int x, int y, bool coordonee = 0);//Tester la présence d'un mur (coordonnee true si x et y en nb de pixels)
  33. short takeItem(int x, int y, bool coordonee = 0);//Tester la présence d'un item
  34. int itemsRestants();//Renvoie le nombre d'items (tonneaux et stecks cofondus) restants
  35. int popFantom(axe choisi);//Utiliser l'enum pour choisir entre abscisse ou ordonnée
  36. int popAllie(axe choisi);//Exemple: int x = popAllie(X);
  37. int getEffectifMobs();//Retourne le nombre de fantômes du niveau
  38. //Fonctions d'édition
  39. std::string getNom();//Retourne l'appellation du niveau
  40. void save(int effectifPhantom);//Sauvegarde le niveau dans le fichier
  41. void placeBloc(short blocChoisi, int x, int y, Uint32 couleur, bool coordonee = 0);//Modifie un bloc dans le niveau
  42. void reset();//Recouvre en totzlité le niveau de pierre
  43. private:
  44. SDL_Surface* m_font;
  45. SDL_Surface* m_items;
  46. std::string m_nom;
  47. std::string m_nomFichier;
  48. int m_lvlNumber;
  49. short m_itemTabl[LG_TABL][LG_TABL];//[y;x]
  50. short m_tabl[LG_TABL][LG_TABL];//[y;x]
  51. int m_effectifItems;
  52. short m_effectifMobs;//Se manifeste dans .txt par un nombre négatif, valeur absolue = nb mobs
  53. int m_spawnPhantom[2];//y x
  54. int m_spawnAllie[2];//y x
  55. };
  56. #endif // NIVEAU_H_INCLUDED