Salut tous le monde ,
j'ai lu rapidement quelque tuto mais je préfére apprendre par moi même ! J'ai donc naturellement commencé à faire des programme plus inutile que les autres pour m'entrainer
!
Mais voila j'ai un probleme je n'ai pas encore pris l'habitude du debug de sfml donc j'ai encore du mal à voir d'où viens mon erreur :/!
mon code s'arrete au niveau des évent (j'ai su ça grace a quelque sleep quis'arette de fonctionner au niveau des events
).
Donc voici le code :
#include <cstdlib>
#include <iostream>
#include <SFML/Graphics.hpp>
using namespace sf;
using namespace std;
int main()
{
RenderWindow app(VideoMode(800, 600, 32), "deplacement chat ");
Image image;
Sprite sprite,personnage;
int x = 100 , y = 100,nombre=0,cote = 3;
bool marche = false;
Event event;
if (!image.LoadFromFile("cat.png"))
{
cout<<"Erreur durant le chargement de l'image"<<endl;
return EXIT_FAILURE;
}
else
{
image.CreateMaskFromColor(sf::Color(32,156,0),255);
personnage.SetImage(image);
while (app.IsOpened())
{
while (app.GetEvent(event))
{
switch (event.Type)
{
case Event::Closed :
app.Close();
break;
case Event::KeyPressed :
{
switch (event.Key.Code)
{
case Key::Down :
if(nombre <= 5)
{
personnage.SetSubRect(sf::IntRect(0, 69, 23, 95));
nombre++;
}
else if(nombre > 5 && nombre <= 10)
{
personnage.SetSubRect(sf::IntRect(23,69,47,95));
nombre++;
}
else
{
personnage.SetSubRect(IntRect(47,69,72,95));
if(nombre == 15)
{
nombre = 0;
}
else
{
nombre++;
}
}
cote = 3;
marche = true;
x--;
break;
case Key::Right:
if(nombre <= 5)
{
personnage.SetSubRect(IntRect(0, 35, 23, 69));
nombre++;
}
else if(nombre > 5 && nombre <= 10)
{
personnage.SetSubRect(IntRect(23, 35, 47, 69));
nombre++;
}
else
{
personnage.SetSubRect(IntRect(47, 35, 72, 69));
if(nombre == 15)
{
nombre = 0;
}
else
{
nombre++;
}
}
cote = 2;
marche = true;
y++;
break;
case Key::Up:
if(nombre <= 5)
{
personnage.SetSubRect(IntRect(0, 0, 23, 33));
nombre++;
}
else if(nombre > 5 && nombre <= 10)
{
personnage.SetSubRect(IntRect(23, 0, 47, 33));
nombre++;
}
else
{
personnage.SetSubRect(IntRect(47, 0, 72, 33));
if(nombre == 15)
{
nombre = 0;
}
else
{
nombre++;
}
}
cote = 1;
marche = true;
x--;
break;
case Key::Left:
if(nombre <= 5)
{
personnage.SetSubRect(IntRect(0,95,23,127));
nombre++;
}
else if(nombre > 5 && nombre <= 10)
{
personnage.SetSubRect(IntRect(23,95,47,127));
nombre++;
}
else
{
personnage.SetSubRect(IntRect(47,95,72,127));
if (nombre==15)
{
nombre = 0;
}
else
{
nombre++;
}
}
cote = 4;
marche = true;
x++;
break;
default :
break;
}
}
break;
default :
break;
}
if(marche == false)
{
if(cote == 1)
{
personnage.SetSubRect(IntRect(23, 0, 47, 33));
}
else if (cote == 2)
{
personnage.SetSubRect(IntRect(0, 35, 23, 69));
}
else if (cote==3)
{
personnage.SetSubRect(IntRect(23,69,47,95));
}
else
{
personnage.SetSubRect(IntRect(23, 95, 47, 127));
}
}
personnage.SetPosition(Vector2f(x, y));
marche = false;
app.Clear();
app.Draw(personnage);
app.Display();
personnage.SetImage(image);
sf::Sleep(0.5f);
std::cout << 1 << std::endl;
}
return EXIT_SUCCESS;
}
}
}
Merci d'avance
!