![Angel 0:]](./images/smilies/angel.png)

nSDL_DrawStringCF(screen, scoreFont, SCREEN_WIDTH/2 - nSDL_GetStringWidth(scoreFont, score_txt)/2, 50, "%d", score);
char score_txt[5] = {0};
nSDL_DrawStringCF(screen, scoreFont, SCREEN_WIDTH/2 - nSDL_GetStringWidth(scoreFont, score_txt)/2, 50, score_txt);
Lepzulnag wrote:Bon ya pas mal de truc à dire pour ton problème de centrage de police et le chat est plein alors je réponds ici
Ta fonction de dessin c'est celle-là :
- Code: Select all
nSDL_DrawStringCF(screen, scoreFont, SCREEN_WIDTH/2 - nSDL_GetStringWidth(scoreFont, score_txt)/2, 50, "%d", score);
Le premier problème, c'est que score_txt n'est pas égal à score pour score = 0.
En effet tu définis score_txt comme suit :
- Code: Select all
char score_txt[5] = {0};
Ce qui équivaut à dire que score_txt = "", et non "0" comme tu voudrais qu'il le soit.
Donc première chose à changer : initialiser correctement score_txt et (c'est optionnel mais ça t'aurait permis de comprendre tout de suite) remplacer ta ligne de dessin du score par :
- Code: Select all
nSDL_DrawStringCF(screen, scoreFont, SCREEN_WIDTH/2 - nSDL_GetStringWidth(scoreFont, score_txt)/2, 50, score_txt);
Comme ça tu es sûr que la chaîne que tu centres est la même que celle que tu dessines.
La seconde chose qui fait que ton score n'est pas toujours bien centré, c'est la façon dont tu as créé tes chiffres. Le '1' notamment (je n'ai pas regardé les autres lettres, mais le '0' et le '2' ne sont pas à changer). Quand tu créées ta police, je te conseille de soit mettre une marge de 1 pixel au début de chaque caractère, soit de ne mettre aucune marge (de telle sorte que le bord gauche du caractère touche la bordure, mais pas forcément le bord droit) et dans ce cas d'utiliser la fonction nSDL_SetFontSpacing(horizontalSpacing, verticalSpacing) pour ne pas que tes caractères se 'collent'.
Return to Native: Ndless, Linux, ...
Users browsing this forum: ClaudeBot [spider] and 11 guests