Bonjour à tous!

Dans le cadre d'un projet étudiant, je dois réaliser un petit JDR. Je n'en suis qu'aux prémisses, mais j'ai déjà un problème .

(Avant de lire la suite, gardez à l'esprit que je suis un débutant, et mon erreur est surement évidente)

J'ai créer une classe Ecran:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
class Ecran
 
{
    public:
 
           Ecran (Carte& p_carte, int p_longueur, int p_hauteur); // Créer l'écran, en fonction de la carte et de la taille passé en paramètre
           void boucle_evenement();
           void redessiner_case (int p_x, int p_y); //permet de redessiner une case en particulier
    private:
 
            void charger_carte ();
            void definir_ecran (int p_longueur, int p_hauteur);
            void ini_sprites ();
 
            sf::RenderWindow mon_ecran;
            sf::Sprite eau;
            sf::Sprite herbe;
            sf::Sprite lave;
            sf::Sprite pierre;
            sf::Sprite rocher;
            sf::Sprite sable;
            sf::Sprite terre;
            sf::Sprite vide;
 
            sf::Image f_imeau;
            sf::Image f_imherbe;
            sf::Image f_imlave;
            sf::Image f_impierre;
            sf::Image f_imrocher;
            sf::Image f_imterre;
            sf::Image f_imsable;
            sf::Image imvide;
 
 
 
 
            Carte* ma_carte;
 
};
Les images et les sprites mis en private, ça me parait bien moche, mais je n'ai pas trouvé d'autre solution.

Dans le constructeur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Ecran::Ecran(Carte& p_carte, int p_longueur, int p_hauteur)
{
    definir_ecran(p_longueur, p_hauteur);
 
    ini_sprites();
 
    ma_carte = &p_carte;
 
    charger_carte();
 
    while (mon_ecran.IsOpened())
{
    sf::Event Event;
    while (mon_ecran.GetEvent(Event))
    {
        // Fenêtre fermée
        if (Event.Type == sf::Event::Closed)
            mon_ecran.Close();
 
        // Touche 'echap' appuyée
        if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
            mon_ecran.Close();
    }
}
}
Oui, la boucle d'évènement est un gros copié-collé du tuto . Je ne l'ai rajouté que pour tester l'affichage, elle devrait être supprimé quand j'aurais réglé le problème.

J'initialise mes sprites ici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
void Ecran::ini_sprites()
{
 
 
 
 
 
    if (!f_imeau.LoadFromFile("data/texture/eau.png"))
   {
    std::cout << "ERREUR LORS DU CHARGEMENT DE LA TEXTURE EAU";
   }
   // Après initialisation de l'image, on charge les sprites en fonction de l'image voulu
   // On répète cette étape pour chaque Sprite.
   eau.SetImage(f_imeau);
   eau.Resize(50.f,50.f);
 
   if (!f_imherbe.LoadFromFile("data/texture/herbe.png"))
   {
    std::cout << "ERREUR LORS DU CHARGEMENT DE LA TEXTURE HERBE";
   }
   herbe.SetImage(f_imherbe);
   herbe.Resize(50.f,50.f);
 
   if (!f_imlave.LoadFromFile("data/texture/lave.png"))
   {
    std::cout << "ERREUR LORS DU CHARGEMENT DE LA TEXTURE LAVE";
   }
   lave.SetImage(f_imlave);
   lave.Resize (50.f,50.f);
 
   if (!f_impierre.LoadFromFile("data/texture/pierre.png"))
   {
    std::cout << "ERREUR LORS DU CHARGEMENT DE LA TEXTURE PIERRE";
   }
   pierre.SetImage(f_impierre);
   pierre.Resize(50.f,50.f);
 
   if (!f_imrocher.LoadFromFile("data/texture/rocher.png"))
   {
    std::cout << "ERREUR LORS DU CHARGEMENT DE LA TEXTURE ROCHER";
   }
   rocher.SetImage(f_imrocher);
   rocher.Resize(50.f,50.f);
 
   if (!f_imterre.LoadFromFile("data/texture/terre.png"))
   {
    std::cout << "ERREUR LORS DU CHARGEMENT DE LA TEXTURE TERRE";
   }
   terre.SetImage(f_imterre);
   terre.Resize(50.f,50.f);
 
   if (!f_imsable.LoadFromFile("data/texture/sable.png"))
   {
    std::cout << "ERREUR LORS DU CHARGEMENT DE LA TEXTURE SABLE";
   }
   sable.SetImage(f_imsable);
   sable.Resize(50.f,50.f);
 
   vide.SetColor(sf::Color(105, 105, 105));
   vide.Resize(50.f,50.f);
 
}
Le "resize" ne devrait pas être nécessaire, mais je voulais vérifier que le problème ne venait pas de là

Pour finir, la fonction qui doit dessiner les Sprites:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
void Ecran::charger_carte()
{
    int i,j;
 
 
 
 
    for (i=0;i<(*ma_carte).recup_ymax();i++)
    {
        for (j=0;j<(*ma_carte).recup_xmax();j++)
        {
             if ((*ma_carte).recup_case(j,i) == 1)
             {
 
                 herbe.SetPosition (j*50,i*50);
                 mon_ecran.Draw(herbe);
             }
             else if ((*ma_carte).recup_case(j,i) == 2)
             {
                 pierre.SetPosition (j*50,i*50);
                 mon_ecran.Draw(pierre);
             }
             else if ((*ma_carte).recup_case (j,i) == 3)
             {
                 terre.SetPosition (j*50,i*50);
                 mon_ecran.Draw(terre);
             }
             else if ((*ma_carte).recup_case(j,i) == 4)
             {
                 sable.SetPosition (j*50,i*50);
                 mon_ecran.Draw(sable);
             }
             else if ((*ma_carte).recup_case(j,i) == 21)
             {
 
                 eau.SetPosition (j*50,i*50);
                 mon_ecran.Draw(eau);
             }
             else if ((*ma_carte).recup_case(j,i) == 22)
             {
                 lave.SetPosition (j*50,i*50);
                 mon_ecran.Draw(eau);
             }
             else if ((*ma_carte).recup_case(j,i) == 23)
             {
                 rocher.SetPosition(i*50,j*50);
                 mon_ecran.Draw(rocher);
             }
             else
             {
                vide.SetPosition(j*50,i*50);
 
                mon_ecran.Draw(vide);
 
             }
        }
    }
}
J'ai vérifié, il rentre dans l'un des if au moment où il doit le faire.

Mon problème, c'est que je n'ai aucun Warning ni message d'erreur, mais qu'à la place d'une fenêtre dessiné, j'ai un écran blanc.

Des idées?

Merci