Advertisement
Guest User

Untitled

a guest
May 27th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.37 KB | None | 0 0
  1. /********************************************
  2. * Fichier : map.cpp - Version : 0.1 Rev4
  3. * Auteur : Johann Mallet <76617>
  4. * ? : Fichier source de la class Map
  5. * ? : Cette class gére l'affichage de la map
  6. *********************************************/
  7.  
  8. /** Include **/
  9. #include <SFML/Graphics.hpp>
  10. #include <string>
  11. #include <stdio.h>
  12. #include <iostream>
  13. #include "constantes.hpp"
  14. #include "map.hpp"
  15.  
  16. using namespace std;
  17.  
  18. /** Class source **/
  19. Map::Map() {
  20.  
  21. // Initialisation d'une nouvelle map, avec les setters tant qu'a faire...
  22. // Image, et sprite associe
  23. setIMur(R_MUR);
  24. setIMurCassable(R_MURCASSABLE);
  25. setIFond(R_FOND);
  26.  
  27. setMur(getIMur());
  28. setMurCassable(getIMurCassable());
  29. setFond(getIFond());
  30.  
  31. // Chargement du niveau à partir du .lvl
  32. chargerNiveau(carte);
  33. }
  34.  
  35. sf::Image& Map::getIFond () {
  36. return iFond;
  37. }
  38. void Map::setIFond(string filename) {
  39. /*if(!iFond.LoadFromFile(filename)) {
  40. printf("prout");
  41. exit(EXIT_FAILURE);
  42. }*/
  43. iFond.LoadFromFile(filename);
  44. }
  45. sf::Sprite Map::getFond () {
  46. return fond;
  47. }
  48. void Map::setFond(sf::Image& img) {
  49. fond.SetImage(img);
  50. //this->fond.Resize(LARGEUR_FENETRE, HAUTEUR_FENETRE);
  51. }
  52.  
  53.  
  54. int Map::chargerNiveau(Case niveau[][NB_BLOCS_LARGEUR]) {
  55. FILE* fichier = NULL;
  56. char ligneFichier[NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1] = {0};
  57. int i = 0, j = 0;
  58.  
  59. fichier = fopen(NIVEAU, "r");
  60. if (fichier == NULL) { return 0; }
  61.  
  62. fgets(ligneFichier, NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1, fichier);
  63.  
  64. for (i = 0 ; i < NB_BLOCS_HAUTEUR ; i++)
  65. {
  66. for (j = 0 ; j < NB_BLOCS_LARGEUR ; j++)
  67. {
  68. switch (ligneFichier[(i * NB_BLOCS_LARGEUR) + j])
  69. {
  70. case '0':
  71. niveau[i][j].setType(VIDE);
  72. break;
  73. case '1':
  74. niveau[i][j].setType(MUR);
  75. break;
  76. case '2':
  77. niveau[i][j].setType(MURCASSABLE);
  78. break;
  79. case '3':
  80. niveau[i][j].setType(JOUEUR); // Même si redéfini par sécurité plus tard...
  81. cout << "Ligne " << i << " - Colone " << j << "Joueur trouvé" << endl;
  82. break;
  83. }
  84. }
  85. }
  86.  
  87. fclose(fichier);
  88. return 1;
  89. }
  90.  
  91. void Map::AfficheMap() {
  92.  
  93. /* // Effacement de la fenetre
  94. //fenetre->Clear(sf::Color(255, 255, 255));
  95. fenetre->Clear(sf::Color(0, 0, 255));
  96.  
  97. // Le fond
  98. //getFond().SetPosition(sf::Vector2f(0,0));
  99. fenetre->Draw(fond);
  100. fenetre->Display();*/
  101.  
  102. // Effacement de la fenetre
  103. fenetre->Clear(sf::Color(255, 255, 255));
  104.  
  105. // Le fond
  106. fond.SetPosition(sf::Vector2f(0,0));
  107. fond.SetColor(sf::Color(255, 255, 255, 128));
  108. fenetre->Draw(fond);
  109.  
  110. // Parcour du tableau
  111. sf::Vector2i position;
  112.  
  113. for (int i = 0 ; i < NB_BLOCS_HAUTEUR ; i++)
  114. {
  115. for (int j = 0 ; j < NB_BLOCS_LARGEUR ; j++)
  116. {
  117. position.x = j * TAILLE_BLOC;
  118. position.y = i * TAILLE_BLOC;
  119.  
  120. switch(carte[i][j].getType())
  121. {
  122. case MUR:
  123. mur.SetPosition(sf::Vector2f(position.x, position.y));
  124. fenetre->Draw(mur);
  125. break;
  126. case MURCASSABLE:
  127. murCassable.SetPosition(sf::Vector2f(position.x, position.y));
  128. fenetre->Draw(murCassable);
  129. break;
  130. //default:
  131. //cout << "type : " << carte[i][j].getType() << endl;
  132. }
  133. }
  134. }
  135.  
  136. // Affichage
  137. fenetre->Display();
  138.  
  139.  
  140. }
  141.  
  142. /** Getters et Setters **/
  143. //Case** Map::getCarte () { return this->carte; }
  144. //void Map::setCarte(Case** carte) { this->carte = carte; }
  145.  
  146. /** Sf::Image **/
  147. sf::Image Map::getIMur () { return this->iMur;}
  148. void Map::setIMur(string iMur) { this->iMur.LoadFromFile(iMur); }
  149.  
  150. sf::Image Map::getIMurCassable () { return this->iMurCassble; }
  151. void Map::setIMurCassable(string iMurCassble) { this->iMurCassble.LoadFromFile(iMurCassble); }
  152.  
  153.  
  154. //sf::Image* Map::getIBombe () { return this->iBombe; }
  155. /*void Map::setIBombe(string* iBombe) {
  156. for ((int i=0;i<NB_BOMBE; i++) {
  157. this->iBombe[i].LoadFromFile(iBombe[i]);
  158. }
  159. }*/
  160.  
  161. /** sf:Sprite **/
  162. sf::Sprite Map::getMur () { return this->mur; }
  163. void Map::setMur(sf::Image mur) { this->mur.SetImage(mur); }
  164.  
  165. sf::Sprite Map::getMurCassable () { return this->murCassable; }
  166. void Map::setMurCassable(sf::Image murCassable) { this->murCassable.SetImage(murCassable); }
  167.  
  168.  
  169. //sf::Sprite* Map::getBombe () { return this->bombe; }
  170. /*void Map::setIBombe(sf::Image* bombe) {
  171. for ((int i=0;i<NB_BOMBE; i++) {
  172. this->bombe[i].SetImage(bombe[i]);
  173. }
  174. }*/
  175.  
  176. // Programmation défensive pour le getter
  177. sf::RenderWindow* Map::getFenetre() { // A change dans le futur par l'appel a la classe qui gere les fenetres
  178. /* if (this->fenetre != NULL) {
  179. sf::RenderWindow fenetre(sf::VideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE), TITRE_FENETRE);
  180. fenetre.SetFramerateLimit(FRAMERATE); // Limite à X images par seconde (CPU less, artefact less...)
  181. this->fenetre = &fenetre;
  182. }*/
  183. return this->fenetre;
  184. }
  185.  
  186. void Map::setFenetre(sf::RenderWindow* fenetre) { this->fenetre = fenetre; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement