Bonjour,
J'ai une fonction dans une class qui hérite d'un sf::sprite et je voudrais dessiner mon sprite dans ma class mais il n s'affiche pas.
class TJoueur : public sf::Sprite
{
protected:
string MNom;
int MHp;
int MScore;
int MLevel;
int MNiveau;
int MLastMoveL;
int MLastMoveR;
sf::Texture MarioTexture;
int MChoixJoueur;
public:
TJoueur(void);
~TJoueur(void);
void MoveJoueur(int InMoved, sf::RenderWindow &window);
};
ma fonction ds le cpp:
void TJoueur::MoveJoueur(int InMoved, sf::RenderWindow &window)
{
float position=0;
switch (InMoved)
{
case 0 :
setTextureRect(sf::IntRect(124,(45*MChoixJoueur),28,35));
MLastMoveL = 0;MLastMoveR=0;
break;
case 1:
if(MLastMoveL == 4)
MLastMoveL = 0;
setTextureRect(sf::IntRect(91-(MLastMoveL*30),(45*MChoixJoueur),28,35));
setPosition(getPosition().x-10, 20);
cout << MLastMoveL;
MLastMoveL ++;
break;
case 2:
if(MLastMoveR == 4)
MLastMoveR = 0;
setTextureRect(sf::IntRect(151+(MLastMoveR*30),(45*MChoixJoueur),28,35));
setPosition(getPosition().x+10, 20);
MLastMoveR++;
break;
default:
setTextureRect(sf::IntRect(124,(45*MChoixJoueur),28,35));
MLastMoveL = 0;MLastMoveR=0;
break;
window.draw(*this);
}
}
j'essais de draw mon sprite avec *this, mais ma fenêtre reste noir.... si je fais le draw dans mon programme principale alors mon image s'affiche... (window.draw(*Joueur);)
voila mon programme principale.... je voulais mettre mon draw dans mon move, car il est dans une boucle
void GameEvent(sf::RenderWindow &window, TJoueur *&Joueur,TMenu *&Menu)
{
sf::Event event;
//gestio des evenments
while (window.pollEvent(event))
{
switch (event.type)
{
case sf::Event::Closed:
window.close();
break;
case sf::Event::KeyPressed:
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
Menu->setselected(-1);
//window.close();
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
Joueur->MoveJoueur(2,window);
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
Joueur->MoveJoueur(1,window);
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
{
}
else
Joueur->MoveJoueur(0,window);
break;
case sf::Event::MouseButtonPressed:
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
}
break;
default:
break;
}
}
window.draw(*Joueur);
}
int main()
{
sf::RenderWindow window(sf::VideoMode(1024,768,32), "Module de fenetre");
sf::Sprite MBackground;
sf::Texture MenuBackground;
MenuBackground.loadFromFile("mario_menu.jpg");
MBackground.setTexture(MenuBackground);
MBackground.setScale(.8,.8);
TJoueur *Joueur;
Joueur = new TJoueur;
Joueur->MoveJoueur(0,window);
window.setFramerateLimit(60);
TMenu *Menu;
initialize(Menu);
while (window.isOpen())
{
window.clear();
//
// Joueur->anim(img);
switch (Menu->getselected())
{
case -1:
window.draw(MBackground);
Menu->CheckSelected(window);
Menu->DrawMenu(window);
break;
case 0:
GameEvent(window,Joueur, Menu);
break;
case 1:window.close();
break;
case 2:window.close();
break;
case 3: window.close();
break;
case 4: window.close();
break;
default:
break;
}
window.display();
}
return 0;
}