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.