Formatage nom pour un affichage de HiScore
bonjour à tous, quelqu'un saurait comment faire pour afficher dans un hiscore un nom que j'aurai rentré grace au programme de David (lettre en lignes et colonnes) que je voudrais formater en 14 lettres
exemple : je tape le nom Patrick et le programme me rajoute 7 "." (points) à la suite pour formater mon nom en 14 lettres soit "Patrick......." + mon score
ainsi tous les noms sont formatés à l'identique
Je vous remercie
j'ai trouvé un truc mais c'est pas très programmeur avec un for i = nbre de lettre + compter le nombre de lettre à rajouter, bref pas très propre
il doit bien y avoir un truc plus joli 🙂
Bonjour a toi, voici le code sans passer par une boucle. Bonne journée a toi
function love.draw() local LENGHTMAX=14 local chaine="toto" --string.len renvoie la longueur d'une chaine --string.rep chaine a repeter, le nombre de fois if(string.len( chaine )<LENGHTMAX) then local repetition=LENGHTMAX-string.len( chaine ) chaine=chaine..string.rep( ".",repetition ) love.graphics.print(chaine,100,100) end end
pour eviter de passer dans la condition en cas d'egaliter il faut remplacer "<" par "~="
@ngadidier petite erreur dans ton code, si tu met le love.graphics.print() dans ta condition, alors il ne s'affichera QUE si la condition est remplie. Mais si l'utilisateur rentre un pseudonyme d'exactement 14 caractères ? Alors à ce moment là la chaine ne s'affichera pas.
Il faut donc sortir cette ligne de la condition afin qu'elle s'affiche qu'il y ai ou non un traitement.
@raphytator bonjour a toi, je sais que mon print n'est pas au bon endroit. J'ai fait cela a l'arrache pour tester et montrer une des solutions possibles.
bonne fin d'apres midi
@pat-again le code est un langage où on expose une logique.
Déjà pourrais tu expliquer pourquoi tu as pensé à faire une boucle ?
"pas très programmeur", "plus joli" ... oublis ces termes, David veut avant tout partager une façon de raisonner et l'esthétique ainsi que se comparer aux autres c'est vraiment pas l'idée.
Hello !
Rassures-toi, cette opération est impossible à effectuer sans passer par une boucle. La solution que t'a montré Thi Nga Nguyen utilise la fonction string.rep, mais si on regarde dans le code source de Lua, cette même fonction utilise.... une boucle.
(pour les curieux il s'agit de la fonction str_rep dans le fichier lstrlib.c)
Bonjour à tous et merci pour vos réponse
j'avais pensé à ça avant de mettre dans le forum :
lst_name[10] = name
-- JE calcule le nombre de point à rajouter
nbre_rajout = 14 - #lst_name[10]
rajoute = ""
for i = 1,nbre_rajout do
rajoute = rajoute .. "."
end
lst_name[10] = lst_name[10] .. rajoute
love.graphic.print (lst_mame[10],100,100)
je vais donc modifier un peu en conséquence
et encore merci pour votre aide
re Bonjour à tous, j'ai trouvé une petite soluce bien pratique sinon ,si ça peut aider :
for h = 1 , 6 do
-- JE formatte LE SCORE du PLAYER
HS_formate = string.sub("000000" ..lst_HighScore[h].score, -6)
love.graphics.print (h .. " - " .. lst_HighScore[h].nom .. " ".. HS_formate .. " " .. " W:" .. lst_HighScore[h].world .. " L:" .. lst_HighScore[h].level , 9*32 - 20 , 320 + h*72 )
end
du coups, les zéros se mettent tout seul devant le score afin que tout soit au meme niveau
- 6 Forums
- 255 Sujets
- 894 Posts
- 0 En ligne
- 45.6 {numéro}K Membres