Bonjour,
J'essaie de créer une map en 2D d'après un fichier texte.
Mon programme lit très bien le fichier, mais il ne le dessine pas dans la fenêtre, je ne sais pas où est le problème.
Je précise que mon code compile sans problème.
main.cpp
int main()
{
sf::RenderWindow window(sf::VideoMode(400, 400), "SFML works!");
const float speed =100;
sf::Clock clock;
sf::Texture *tPerso=new sf::Texture;
int carte[200][200];
sf::Sprite *sPerso=new sf::Sprite;
sf::Image *iPerso=new sf::Image;
MapManager niveau;
niveau.lectureNiveau(carte);
while (window.isOpen())
{
sf::Event event;
float elapsed = clock.restart().asSeconds();
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
if(sf::Event::KeyPressed)
{
}
window.clear(sf::Color::White);
niveau.initSprites(carte,window);
window.draw(*sPerso);
window.display();
}
delete iPerso;
delete tPerso;
delete sPerso;
return 0;
}
MapManger.cpp:
#include "MapManager.h"
MapManager::MapManager()
{
}
void MapManager::initSprites(int carte[][TAILLE],sf::RenderWindow &fenetre)
{
int tailleX;
int tailleY;
int i=0;
int j=0;
if(iTiles.loadFromFile("tileSet.jpg")) //Chargement Images
{
tailleX= iTiles.getSize().x/3;
tailleY= iTiles.getSize().y/5;
tTiles.loadFromImage(iTiles);
sTiles1.setTexture(tTiles);
sTiles2.setTexture(tTiles);
sTiles3.setTexture(tTiles);
sTiles4.setTexture(tTiles);
sTiles5.setTexture(tTiles);
for(i=0;i<6;i++)
{
for(j=0;j<9;j++)
{
switch(carte[i][j])
{
case 1:
sTiles1.setTextureRect(sf::IntRect(0,0,tailleX,tailleY));
sTiles1.setPosition(j*tailleX,i*tailleY);
fenetre.draw(sTiles1);
break;
case 2:
sTiles2.setTextureRect(sf::IntRect(tailleX,0,2*tailleX,tailleY));
sTiles2.setPosition(j*tailleX,i*tailleY);
fenetre.draw(sTiles2);
break;
case 3:
sTiles3.setTextureRect(sf::IntRect(2*tailleX,0,3*tailleX,tailleY));
sTiles3.setPosition(j*tailleX,i*tailleY);
fenetre.draw(sTiles3);
break;
case 4:
sTiles4.setTextureRect(sf::IntRect(0,tailleY,tailleX,2*tailleY));
sTiles4.setPosition(j*tailleX,i*tailleY);
fenetre.draw(sTiles4);
break;
case 5:
sTiles5.setTextureRect(sf::IntRect(tailleX,tailleY,2*tailleX,2*tailleY));
sTiles5.setPosition(j*tailleX,i*tailleY);
fenetre.draw(sTiles5);
break;
default:
break;
}
}
}
}
else{cout << "Erreur chargement Image tileSet.png"<<endl;}
}
MapManager.hpp
#ifndef MAPMANAGER_H_INCLUDED
#define MAPMANAGER_H_INCLUDED
#include <iostream>
#include <fstream>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#define TAILLE 200
using namespace std;
class MapManager
{
public:
MapManager();
void lectureNiveau(int carte[][TAILLE]);
void initSprites(int carte[][TAILLE],sf::RenderWindow &fenetre);
private:
sf::Image iTiles;
sf::Texture tTiles1;
sf::Sprite sTiles1;
sf::Texture tTiles2;
sf::Sprite sTiles2;
sf::Texture tTiles3;
sf::Sprite sTiles3;
sf::Texture tTiles4;
sf::Sprite sTiles4;
sf::Texture tTiles5;
sf::Sprite sTiles5;
};
#endif // MAPMANAGER_H_INCLUDED