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

Auteur Sujet: fonction wrap  (Lu 2195 fois)

0 Membres et 1 Invité sur ce sujet

Sylvie-C

  • Invité
fonction wrap
« le: Juillet 23, 2016, 06:07:37 pm »
Bonjour !  :)

C'est sûrement très bête ( je débute :-\ ), mais je voudrais pouvoir utiliser ma fonction "wrap", qui remplace par des "\n", en fonction d'une largeur et d'un objet sf::Text donnés en paramètres, les derniers espaces avant le supposé bord droit défini par la largeur.
J'ai testé ma fonction dans un fichier .cpp à part, ça fonctionne, mais quand j'essaie de l'utiliser dans le jeu que je m'amuse à créer pour m'entraîner (le basique mais célèbre jeu du mot mystère), je n'y arrive pas.

J'ai un fichier "main.cpp", puis 2 autres : "fonctions.cpp" et "fonctions.h", ma fonction "wrap" se trouvant donc implémentée dans "fonctions.cpp" et définie dans "fonctions.h".

Définition de ma fonction "wrap" :   
void wrap (std::size_t width , sf::Text text) ;

Dans le programme du "main", j'écris donc les extraits suivants :
...

#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>

#include "fonctions.h"

sf::Text texte1 ;
texte1.setFont( ... ) ;
...
texte1.setString(L"Vous devez deviner le mot en replaçant les lettres dans le bon ordre.") ;
...
wrap ( 790 , texte1 ) ;    // 800 étant la largeur de ma fenêtre (RenderWindow)
...
window.draw(sprite) ;
window.draw(texte1) ;
...

Aucune erreur n'est relevée par le compilateur, mais mon texte n'est pas "wrappé" : il reste sur une ligne qui dépasse la largeur de ma fenêtre.
Je sais, je pourrais directement écrire les "\n" à la création du String, mais c'est pour pratiquer que j'essaie de créer cette fonction "wrap".

Peut-être y aurait-il un autre moyen qui m'échappe, grâce à Sfml, pour "wrapper" découper mon texte afin qu'il ne dépasse pas le cadre de la fenêtre en largeur ?

Merci pour vos éventuelles lumières. :)
« Modifié: Juillet 23, 2016, 06:36:04 pm par Sylvie-C »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : fonction wrap
« Réponse #1 le: Juillet 23, 2016, 06:19:31 pm »
Et on est censés faire quoi exactement ?
Laurent Gomila - SFML developer

Sylvie-C

  • Invité
Re : fonction wrap
« Réponse #2 le: Juillet 23, 2016, 06:45:10 pm »
Peut-être pouvez-vous m'expliquer d'où vient ce problème d'affichage du texte ? Je suppose que c'est une mauvaise utilisation de ma part d'SFML, d'où ma question sur ce forum d'Aide ...
Merci.

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : fonction wrap
« Réponse #3 le: Juillet 23, 2016, 07:40:34 pm »
Tu passes ton sf::Text par copie à ta fonction wrap, donc ce qui est fait à l'intérieur de cette fonction est fait sur une copie dont tu ne te sers apparemment jamais.
Passe ton sf::Text par référence ou par pointeur.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : fonction wrap
« Réponse #4 le: Juillet 23, 2016, 09:28:34 pm »
Citer
Peut-être pouvez-vous m'expliquer d'où vient ce problème d'affichage du texte ? Je suppose que c'est une mauvaise utilisation de ma part d'SFML, d'où ma question sur ce forum d'Aide ...
Merci.
Merci d'avoir édité ton post pour ajouter du code et une description. Mais la prochaine fois indique le dans ta réponse, maintenant mon premier post semble totalement hors de propos, voire agressif... ;)
Laurent Gomila - SFML developer

Sylvie-C

  • Invité
Re : Re : fonction wrap
« Réponse #5 le: Juillet 23, 2016, 10:35:55 pm »
Tu passes ton sf::Text par copie à ta fonction wrap, donc ce qui est fait à l'intérieur de cette fonction est fait sur une copie dont tu ne te sers apparemment jamais.
Passe ton sf::Text par référence ou par pointeur.

Merci G. Je vais tenter un passage par référence.

Citer
Peut-être pouvez-vous m'expliquer d'où vient ce problème d'affichage du texte ? Je suppose que c'est une mauvaise utilisation de ma part d'SFML, d'où ma question sur ce forum d'Aide ...
Merci.
Merci d'avoir édité ton post pour ajouter du code et une description. Mais la prochaine fois indique le dans ta réponse, maintenant mon premier post semble totalement hors de propos, voire agressif... ;)

Désolée Laurent, j'ai en fait posté sans faire gaffe pendant que j'écrivais, avant d'avoir fini, et vous avez répondu avant que je termine (plus rapide que l'éclair ! :) ) au 1er message qui ne ressemble à rien, un peu énervant (parce-que c'est vrai que vous avez l'air énervé  ;D ) . J'éviterai de modifier mes messages quand une réponse y aura déjà été faite maintenant, sorry. :)
Merci pour vos réponses en tout cas.
« Modifié: Juillet 23, 2016, 10:39:27 pm par Sylvie-C »