Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - TZK

Pages: [1]
1
Au cas où ce serait passé inaperçu (ça a l'air d'être le cas...), dans ma réponse il y a la solution à ton problème.

Excusez-moi, j'avais bien modifié mon code mais VS2012 a oublié de recompiler...

C'est bon tout marche ! :)

2
as-tu verifie la valeur de m_size.x ou m_size.y pendant l'execution ?

Les valeurs de m_size.x ou m_size.y sont bonne à l’exécution, j'ai vérifié en les affichant dans la console et de toute manière le déplacement fonctionne avec ces valeurs uniquement lorsqu'elles sont positives.

Il m'est impossible de faire un déplacement vers le haut ou encore vers la gauche.

3
Graphique / Re : Impossible de déplacer une sprite sur axe négatif
« le: Juillet 23, 2013, 03:37:57 pm »
Tout d'abord, merci pour tes conseils. J'en tiens compte, je vais modifier ça :)
Par contre, pour les déplacements de la sprite, c'est effectivement que lorsque je veux effectuer un déplacement négatif. Dans ce cas là, rien ne se passe.
Par contre, si j'utilise move de cette façon ça marche,
m_sprite.move(0,-10);
mais pas
sprite.move(0, -m_size.x)

4
Graphique / [Résolu]Impossible de déplacer une sprite sur axe négatif
« le: Juillet 23, 2013, 03:09:56 pm »
Salut à tous. Etant débutant avec la SFML, j'ai décidé de créer un petit PacMan-Like pour m'entrainer.
Pour le moment, je n'en suis qu'à la gestion des déplacement des entités.
Le problème c'est que je n'arrive pas à déplacer ma sprite en négatif(pour les déplacements vers la gauche et le haut).

Je poste mon code:
main.cpp
#include <iostream>
#include <SFML\Graphics.hpp>

#include "Entity.h"

using namespace sf;
using namespace std;

int main(int argc, char *argv[]){

        RenderWindow app(VideoMode(800,600, 32), "TEST");
        Entity player("sprite.png",Vector2i(21,538) ,Vector2i(14,14));

        app.setFramerateLimit(60);

        while(app.isOpen()){
               
                Event event;
                while(app.pollEvent(event)){
                        if(event.type == Event::Closed || Keyboard::isKeyPressed(Keyboard::Escape))
                                app.close();
                        player.move();
                }

                app.clear();
                app.draw(player.getSprite());
                app.display();

        }

        return 0;
}
 

Display.cpp
#include "Display.h"

using namespace sf;
using namespace std;

Display::Display(){}

Display::Display(string file, Vector2i pos, Vector2i size)
        :m_file(file), m_pos(pos), m_size(size){
                setSprite();
                m_tex.setSmooth(true);
}

Sprite Display::getSprite() const{
        return m_sprite;
}

void Display::setSprite(){

        if(!m_tex.loadFromFile(m_file, IntRect(m_pos.x, m_pos.y, m_size.x, m_size.y))){
                cout << "ERROR: The file " << m_file << " cannot be loaded !" << endl;
        }
        else
                m_sprite.setTexture(m_tex);

}

void Display::changeSprite(Vector2i pos){
        m_pos = pos;
        setSprite();
}

void Display::moveSprite(char dir){

        switch (dir){

                case 'U':{
                        m_sprite.move(0.0f, -m_size.x);
                }

                case 'D':{
                         m_sprite.move(0, m_size.y); // Y
                }

                case 'L':{
                         m_sprite.move(-m_size.x, 0); // -X
                }

                case 'R':{
                         m_sprite.move(m_size.x, 0); // X
                }

                default:
                        break;
        }

}
 

Display.h
#ifndef DISPLAY_H
#define DISPLAY_H

#include "includes.h"

class Display{

public:
        Display();
        Display(std::string file, sf::Vector2i pos, sf::Vector2i size);
        sf::Sprite getSprite() const;
        void setSprite();
        void changeSprite(sf::Vector2i pos);
        void moveSprite(char dir);


private:
        sf::Texture  m_tex;
        sf::Sprite       m_sprite;
        std::string  m_file; // Path to texture file.(jpg, png, gif)
        sf::Vector2i m_size; // Sprite size
        sf::Vector2i m_pos; // Sprite position on texture file
};

#endif
 

Entity.cpp
#include "Entity.h"


using namespace sf;

Entity::Entity(std::string file, Vector2i pos, Vector2i size){
        m_entity = new Display(file, pos, size);
}

Entity::~Entity(){
        delete m_entity;
}

void Entity::move(){

        if(Keyboard::isKeyPressed(Keyboard::Up)){
                m_entity->moveSprite('U');
                std::cout << "UP" << std::endl;
        }

        if(Keyboard::isKeyPressed(Keyboard::Down)){
                m_entity->moveSprite('D');
                std::cout << "DOWN" << std::endl;
        }

        if(Keyboard::isKeyPressed(Keyboard::Left)){
                m_entity->moveSprite('L');
                std::cout << "LEFT" << std::endl;
        }

        if(Keyboard::isKeyPressed(Keyboard::Right)){
                m_entity->moveSprite('R');
                std::cout << "RIGHT" << std::endl;
        }

}

sf::Sprite Entity::getSprite() const{
        return m_entity->getSprite();
}
 

Entity.h
#ifndef ENTITY_H
#define ENTITY_H

#include "includes.h"
#include "Display.h"

class Entity{

public:
        Entity(std::string file, sf::Vector2i pos, sf::Vector2i size);
        ~Entity();
        sf::Sprite getSprite() const;
        void move();

private:
        Display *m_entity;
};

#endif
 

Donc comme vous pouvez le voir, j'essaie de déplacer ma sprite avec une valeur négative(via la variable m_size.x) mais lorsque j’exécute le programme, rien ne se passe.
Je précise que si je passe une valeur numérique sans passer par une variable, la sprite se déplace.

Je ne comprends pas trop le problème.

Merci ;)

Pages: [1]