12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #ifndef NIVEAU_H_INCLUDED
- #define NIVEAU_H_INCLUDED
- /**
- Projet: PacMen
- Programmeur: Jovian Hersemeule
- Date de dernière modification: 7 fevrier 2014
- Objet: ajout attribut m_nomFichier, le constructeur créé un niveau MEME si fichier absent + fonction reset
- Prochaine étape:
- */
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <SDL/SDL.h>
- #undef main
- #define LG_BLOC 30
- #define LG_TABL 20
- enum axe {Y=0,X=1};
- enum bloc {RIEN=0,MUR=1,PLAQUE=2,SPAWN_ALLIE=3,SPAWN_PHANTOM=4};
- enum item {VIDE=0,STEACK=1,TONNEAU=2};
- class Niveau
- {
- public:
- Niveau();//Niveau vide
- Niveau(std::string nomFichier, Uint16 fraction = 0);//Appelle automatiquement creer()
- ~Niveau();
- //Fonctions générales
- int peindreFont(Uint16 fraction);
- bool creer(std::string nomFichier, Uint16 fraction = 0);//Charge un niveau
- void afficher(SDL_Surface* support, bool hideItem=0);//Coller les surfaces de terrain (et les items si besoin)
- //Fonctions de jeu
- void remplirItems();//Pose les steaks par terre
- 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)
- short takeItem(int x, int y, bool coordonee = 0);//Tester la présence d'un item
- int itemsRestants();//Renvoie le nombre d'items (tonneaux et stecks cofondus) restants
- int popFantom(axe choisi);//Utiliser l'enum pour choisir entre abscisse ou ordonnée
- int popAllie(axe choisi);//Exemple: int x = popAllie(X);
- int getEffectifMobs();//Retourne le nombre de fantômes du niveau
- //Fonctions d'édition
- std::string getNom();//Retourne l'appellation du niveau
- void save(int effectifPhantom);//Sauvegarde le niveau dans le fichier
- void placeBloc(short blocChoisi, int x, int y, Uint32 couleur, bool coordonee = 0);//Modifie un bloc dans le niveau
- void reset();//Recouvre en totzlité le niveau de pierre
- private:
- SDL_Surface* m_font;
- SDL_Surface* m_items;
- std::string m_nom;
- std::string m_nomFichier;
- int m_lvlNumber;
- short m_itemTabl[LG_TABL][LG_TABL];//[y;x]
- short m_tabl[LG_TABL][LG_TABL];//[y;x]
- int m_effectifItems;
- short m_effectifMobs;//Se manifeste dans .txt par un nombre négatif, valeur absolue = nb mobs
- int m_spawnPhantom[2];//y x
- int m_spawnAllie[2];//y x
- };
- #endif // NIVEAU_H_INCLUDED
|