Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: La flèche qui s'affiche mal  (Lu 5272 fois)

0 Membres et 1 Invité sur ce sujet

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
La flèche qui s'affiche mal
« le: Octobre 12, 2015, 06:36:13 pm »
Salut !
Encore un problème !
Alors voilà, je fais mon jeu 2d iso tranquillement, j'essaie de mettre dans mon jeu un système pour changer de map, et pour ça, je veux afficher une flèche aux abord de la fenêtre.
Voici mon code:
(click to show/hide)
Arrow.h:
(click to show/hide)
Voici ce que me donne le résultat:
ArrowDrawed True. Pos Mouse: 74, 234
Tile: 1, 13
Mais la flèche est "coupée", je n'en vois qu'une partie (changer les positions des move ne sert à rien).
Merci de m'aider.

PS: Et la flèche est bien dans le Working Directory, de plus, si il y'a un problème pour la charger, Le jeu m'affiche ce problème.
« Modifié: Janvier 01, 2016, 07:27:22 pm par S66 »

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : La flèche qui s'affiche pas
« Réponse #1 le: Octobre 12, 2015, 10:22:03 pm »
Citer
states.transform *= getTransform(); //Sinon j'ai pas compris un truc là:
        //Pourquoi on fait *= et pas = getTransform() ?

Salut, ton entité hérite des transformations de ses éventuels parent.  d'ou la multiplication.
pour ton problème, je ne vois pas, un problème avec la vue courante ?

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
Re : La flèche qui s'affiche pas
« Réponse #2 le: Octobre 13, 2015, 07:50:42 am »
Pour l'instant je n'utilise aucune vue (et je prévois de n'en utiliser aucune)
Pour ma map, je vais simplement faire map.load(...) à chaque fois que je change de map.
« Modifié: Octobre 13, 2015, 08:14:35 am par S66 »

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
Re : La flèche qui s'affiche pas
« Réponse #3 le: Octobre 13, 2015, 08:07:39 am »
J'ai rajouté quelques infos, et j'ai donc:
ArrowDrawed True. Pos Mouse: 244, 233
Tile: 7, 13
Pos fleche: 447, 209
Orientation: flechebas
447 en x ? C'est assez bizarre, vu que ma souris était vers le milieu de la fenêtre, pas vers la fin.
Je mets donc:
for(int i(0); i < tile.x; ++i) {
                    m_fleche.move(32.f, 0.f);
                }
Au lieu de:
for(int i(0); i < tile.x; ++i) {
                    m_fleche.move(64.f, 0.f);
                }
J'ai alors ce résultat:
ArrowDrawed True. Pos Mouse: 254, 227
Tile: 7, 13
Pos fleche: 223, 209
Orientation: flechebas
Mais cette foutue flèche ne s'affiche toujours pas.

Edit: J'ai aussi mis 16.f dans le for pour les y
Et voilà ce que j'obtiens:
ArrowDrawed True. Pos Mouse: 277, 236
Tile: 8, 14
Pos fleche: 255, 209 <- Dans ce cas là, le y est normal, mais quand j'ai mis 32.f avant, il aurait du doubler...
Orientation: flechebas
Et, vous l'aurez deviné, toujours pas de flèche...
« Modifié: Octobre 13, 2015, 08:11:31 am par S66 »

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : La flèche qui s'affiche pas
« Réponse #4 le: Octobre 13, 2015, 04:47:04 pm »
Pourquoi tu utilises la méthode draw ? sf::Sprite à déjà tout ce qu'il faut pour être dessiné à l'écran. Sprite à déjà une texture en interne , essaye d'utilisé une autre méthode qui n'est pas dérivé de drawable ni de transformable , d'ailleurs , j'ai l'impression que ta conception n'est pas bonne du tout. à quoi sert de dérivé , si pour au final tu utilises un sf::sprite ? autant viré le sprite ( j'ai pas vu de setTexture() non plus ) et utilisé les vertex array :
http://www.sfml-dev.org/tutorials/2.3/graphics-vertex-array-fr.php

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
Re : La flèche qui s'affiche pas
« Réponse #5 le: Octobre 13, 2015, 05:08:39 pm »
J'utilise draw() car je dérive ma classe de QSfmlCanvas. (Qt+Sfml)
Je ne mets pas de setTexture car dans la fonction virtual void draw, j'affecte la texture du RenderStates à la texture de l'Arrow.
A quoi serviraient les vertex arrays dans ce cas là ? Je veux juste dessiner une flèche.
Ça change rien que je rajoute setTexture dans le load().
Re-Edit: J'ai rebuild et ça a (enfin) marché !
J'ai juste un petit problème avec les flèches de droite et gauche mais je pense régler ça rapidement
« Modifié: Octobre 13, 2015, 05:15:01 pm par S66 »

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : [R] La flèche qui s'affiche pas
« Réponse #6 le: Octobre 13, 2015, 08:19:54 pm »
Citer
A quoi serviraient les vertex arrays dans ce cas là ? Je veux juste dessiner une flèche.

A ne pas faire doublon avec tes dérivations, dans ce cas, autant dérivé directement de sf::sprite.

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
Re : [Pas Résolu] La flèche qui s'affiche pas
« Réponse #7 le: Octobre 17, 2015, 06:52:10 pm »
Hello,
En fait j'ai pas réussi à afficher ma flèche correctement.
Encore un bug.
Voici mon code d'affichage, tout ce qu'il y'a de plus normal:
bool arrowdrawed = false;
            if (mousePos.x > 0 && mousePos.x < 15 && arrowdrawed == false) {
                arrowdrawed = true;
                if (m_fleche.getPathName() != "flechegauche")
                    m_fleche.load(m_tex->images.getPath("flechegauche"), "flechegauche");
                m_fleche.setPosition(0.f, -1.f);
                sf::Vector2i tile = perso.getTileIso(sf::Vector2i(mousePos.x, mousePos.y), m_tex->images.getPath("schemepng"));
                for(int i(0); i < tile.y; ++i) {
                    m_fleche.move(0.f, 16.f);
                }
                if (tile.y == map.getMAPY()*2-1)
                    arrowdrawed = false;
            }
            if (mousePos.x > map.getMAPX()*32+17 && mousePos.x < map.getMAPX()*32+32 && arrowdrawed == false) {
                arrowdrawed = true;
                if (m_fleche.getPathName() != "flechedroite")
                    m_fleche.load(m_tex->images.getPath("flechedroite"), "flechedroite");
                m_fleche.setPosition(static_cast<float>(15*32+32-47), -1.f);
                sf::Vector2i tile = perso.getTileIso(sf::Vector2i(mousePos.x, mousePos.y), m_tex->images.getPath("schemepng"));
                for(int i(0); i < tile.y; ++i) {
                    m_fleche.move(0.f, 16.f);
                }
                if (tile.y == map.getMAPY()*2-1)
                    arrowdrawed = false;
            }
            if (arrowdrawed)
draw(m_fleche);
Problème: La flèche est "coupée". On ne voit pas la fin de la flèche, et une petite ligne de la couleur de la flèche s'affiche en bas de celle-ci...
Pourtant, mes images sont bien normales...

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
Re : [Pas Résolu] La flèche qui s'affiche pas
« Réponse #8 le: Octobre 22, 2015, 10:56:20 am »
Toujours aucune idée ?

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
Re : [Pas Résolu] La flèche qui s'affiche pas
« Réponse #9 le: Janvier 01, 2016, 07:25:36 pm »
Up, ça date, je sais, mais c'est toujours comme ça.
Sinon, bonne année !

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
Re : La flèche qui s'affiche mal
« Réponse #10 le: Mars 05, 2016, 07:39:57 pm »
Up.
Ce bug est chiant.

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : La flèche qui s'affiche mal
« Réponse #11 le: Mars 06, 2016, 03:39:49 pm »
Citer
Voici mon code d'affichage, tout ce qu'il y'a de plus normal:
Quand je vois ton code, avec des load, des pointeurs, etc...

m_fleche.load(m_tex->images.getPath("flechegauche"), "flechegauche");
pour moi, il y a un gros problème de conception, on ne load pas lors de l'affichage. les pointeurs sont aussi a proscrire , car souvent source d'incompréhension & d'erreurs.

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
Re : La flèche qui s'affiche mal
« Réponse #12 le: Mars 19, 2016, 11:40:53 am »
Je load quand la souris est sur le bord de la fenêtre. Pour vérifier ça, il me faut une boucle d'évènement. Donc juste avant l'affichage.
Pour les pointeurs, ça ne me dérange pas, c'était soit pointeur, soit référence, j'ai choisi pointeur.