1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
/*
--- Fichier contenant les implémentations de la classe Map
*/
#include "Constantes.h"
#include "Map.h"
Map::Map()
{
//Si une image n'a pas pu se charger correctement, on arrête tout
if(!imageCaisse.LoadFromFile("caisse.png") || !imageCaisseOk.LoadFromFile("caisseOk.png") ||
!imageMarioBas.LoadFromFile("marioBas.png") || !imageMarioDroite.LoadFromFile("marioDroite.png") ||
!imageMarioGauche.LoadFromFile("marioGauche.png") || !imageMarioHaut.LoadFromFile("marioHaut.png") ||
!imageMur.LoadFromFile("mur.png") || !imageObjectif.LoadFromFile("objectif.png") || !imageCaseVide.LoadFromFile("caseVide.png"))
{
cout << "Une erreur est survenue lors du chargement du jeu" << endl;
exit(EXIT_FAILURE);
}
//Affectation des sprites
spriteCaisse.SetImage(imageCaisse);
spriteCaisseOk.SetImage(imageCaisseOk);
spriteMarioBas.SetImage(imageMarioBas);
spriteMarioDroite.SetImage(imageMarioDroite);
spriteMarioGauche.SetImage(imageMarioGauche);
spriteMarioHaut.SetImage(imageMarioHaut);
spriteMur.SetImage(imageMur);
spriteObjectif.SetImage(imageObjectif);
spriteCaseVide.SetImage(imageCaseVide);
//Création du tableau des références vers les sprites
creerTableauRef(spriteMur, spriteCaisse, spriteCaisseOk, spriteMarioDroite, spriteMarioGauche, spriteMarioHaut, spriteMarioBas, spriteObjectif, spriteCaseVide);
}
Map::~Map()
{
}
//Fonction qui va créer le tableau des références des sprites
void Map::creerTableauRef(Sprite &mur, Sprite &caisse, Sprite &caisseOk, Sprite &marioDroite, Sprite &marioGauche, Sprite &marioHaut, Sprite &marioBas, Sprite &objectif, Sprite &caseVide)
{
tabReference[MUR] = mur;
tabReference[CAISSE] = caisse;
tabReference[CAISSE_OK] = caisseOk;
tabReference[MARIO_DROITE] = marioDroite;
tabReference[MARIO_GAUCHE] = marioGauche;
tabReference[MARIO_HAUT] = marioHaut;
tabReference[MARIO_BAS] = marioBas;
tabReference[OBJECTIF] = objectif;
tabReference[CASE_VIDE] = caseVide;
}
//Fonction qui va afficher la map
void Map::afficheMap(RenderWindow &fenetre)
{
map = {
{CASE_VIDE, CAISSE, MARIO_DROITE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE},
{CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE},
{CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE},
{CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE},
{CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE},
{CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE},
{CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE},
{CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE},
{CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE},
{CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE, CASE_VIDE},
};
//Parcourt de la map et affichage des sprites
for(int i = 0; i < NB_TILE_LARGEUR; i++)
{
for(int j = 0; j < NB_TILE_LONGUEUR; j++)
{
switch(map[i][j])
{
case CASE_VIDE:
spriteTexture = tabReference[CASE_VIDE];
spriteTexture.SetPosition(i * LARGEUR_TILE, j * LONGUEUR_TILE);
fenetre.Draw(spriteTexture);
break;
case CAISSE:
spriteTexture = tabReference[CAISSE];
spriteTexture.SetPosition(i * LARGEUR_TILE, j * LONGUEUR_TILE);
fenetre.Draw(spriteTexture);
break;
case MARIO_DROITE:
spriteTexture = tabReference[MARIO_DROITE];
spriteTexture.SetPosition(i * LARGEUR_TILE, j * LONGUEUR_TILE);
fenetre.Draw(spriteTexture);
break;
}
}
}
}
//Retourne la référence du sprite du tableau
Sprite Map::getSprite(int caseTab)
{
return tabReference[caseTab];
} |