Guelnika, le site d'E-magination

 

Tutoriaux

Afficher une variable en images

Afficher une variable en images

Date : 13/01/2009
Auteur : AristA
Dans ce tutoriel nous allons apprendre à afficher une variable, qui peut être égale à l'argent, au PV du héros, au temps joué... Autant dire que si vous passez par un CMS, il vous faudra absolument utiliser cette technique si vous voulez afficher une valeur numérique. Là, ce qu'on veut afficher, c'est l'argent possédé par notre personnage.

Peut-être que vous pensez : "OMG 10 000 conditions ! J'me barre moi !" ; Et bien non, on aura juste 40 petites conditions si le max d'argent est de 9 999, 50 si il est de 99 999.

Image illustrative
Ce que nous allons afficher




Obtenir les chiffres dans des variables à part

Alors, nous allons dire que la valeur max de votre variable va être 9 999. Ici, ça va être l'argent, représenté par la variable 10.

Maintenant, je vais vous en dire plus ces fameuse "40 conditions" : en fait, c'est simple. On va trouver d'abord les unités de l'argent, puis les dizaines, les centaines, les milliers ainsi de suite, autant qu'il faudra. Ensuite on va créer plusieurs évènements communs, je vous donne leur nom pour savoir à quoi il servent : Argent 1, Argent 10, Argent 100, Argent 1000, etc...

C'est pas clair ? C'est normal.

- Dans l'évènement commun "Argent 1", on va afficher les unités de l'argent.

- Dans l'évènement commun "Argent 10", on va afficher les dizaines.

- Dans l'évènement commun "Argent 100", on va afficher les centaines.

- Dans l'évènement commun "Argent 1000", on va afficher les milliers.

C'est plus clair dans vos têtes maintenant. Allez, passons à la création de tous ça. Déjà il faut trouver les unités, dizaines, centaines et milliers de l'argent. C'est simple, déjà créez 4 variables : une qui s'appelle "Argent unités", une autre qui s'appelle "Argent dizaines", une autre "Argent centaines" et enfin une dernière "Argent milliers". Allez ensuite dans l'évènement commun "Argent" (celui qu'on à créé au début) et dedans ajoutez :

Citation<>Variable(s): [0011:Argent milliers] = Valeur de [0010:argent]
<>Variable(s): [0011:Argent milliers] /, 1000
<>Variable(s): [0011:Argent milliers] modulo, 10


Une petite explication s'impose:

- <>Variable(s): [0011:Argent milliers] = Valeur de [0010:argent] : là, on rend égal la variable "Argent millers" à la valeur de la variable "argent".

- <>Variable(s): [0011:Argent milliers] /, 1000 : ici on divise la variable "Argent milliers" par 1000. Pourquoi par 1000 ? Parce-que dans "Argent milliers" on va chercher les milliers justement.

- <>Variable(s):[0011:Argent milliers] modulo, 10 : Voir ci-dessous.

Voilà une explication, maintenant continuons (restez dans le même évènement commun, c'est pas encore fini !). Ajoutez maintenant ceci pour les qu'on trouve les centaines :

CitationVariable(s): [0012:Argent centaines] = valeur de [0010:argent] (on rend égal la variable "Argent centaines" par la valeur de la variable "argent")
<>Variable(s): [0012:Argent centaines] /, 100 (on divise par 100 parce-que on cherche les centaines.)
<>Variable(s): [0012:Argent centaines] modulo, 10


Maintenant "Modulo 10" sert à trouver le nombre des unités, donc après avoir divisé la variable par 100, elle va nous donner un nombre à virgule (par exemple si notre argent est de 1456, après l'avoir diviser par 100 ça nous donne 14,56). Le nombre est ensuite tronqué par RPG Maker pour donner 14. Nous ce qu'on veut c'est le chiffre des centaines (donc 4) : modulo 10 et paf! c'est 4 qu'on nous trouve.

Maintenant que vous savez tout ça, on va tracer. Restez toujours dans le même évènement commun, c'est toujours pas fini. Ajoutez ceci :

Citation<>Variable(s): [0013:Argent dizaines] = valeur de [0010:argent]
<>Variable(s): [0013:Argent dizaines] /, 10
<>Variable(s): [0013:Argent dizaines] modulo, 10


Jusqu'à là, vous suivez normalement. On cherche ensuite le chiffre des dizaines.

Citation<>Variable(s): [0014:Argent unités] = valeur de [0010:argent]
<>Variable(s): [0014:Argent unités] modulo, 10


Ici, il n'y a pas de division, parce-que ça ne sert à rien. Mais si ça vous amuse vous pouvez toujours diviser la variable 14 par 1, si vous n'avez que ça à faire d'encombrer votre code bande de malapris.


Afficher la variable

On commence par afficher les milliers ? Alors allez dans l'évènement commun "Argent 1000" que je vous devriez avoir créer ! Dedans, nous allons mettre 10 conditions. Les conditions ressembleront à ça :

Citation<> Si variable [0011:Argent milliers] 0 (Si cette variable est égal à 0)
<><>Afficher une image: 10, 0, (126, 225)
<>Fin


Petite précision par rapport à la ligne où on affiche l'image : je ne veut pas vous embrouiller, alors lisez ainsi : le nombre 10 correspond au numéro de l'image et le chiffre 0 au nom de l'image que j'affiche. Le 126, 225 au coordonnées X et Y de l'image sur l'écran. Mais affichez l'image où vous voulez, ce n'est pas important.

A savoir que vous avez besoin de pictures (images) de chiffres (de 0 à 9). Voilà à quoi devrait ressembler votre évènement commun "Argent 1000" :

Citation<>Si variable [0011:Argent milliers] 0
<><>Afficher une image: 10, 0, (126, 225)
<>Fin
<>Si variable [0011:Argent milliers] 1
<><>Afficher une image: 10, 1, (126, 225)
<>Fin
<>Si variable [0011:Argent milliers] 2
<><>Afficher une image: 10, 2, (126, 225)
<>Fin
<><>Si variable [0011:Argent milliers] 3
<>Afficher une image: 10, 3, (126, 225)
<>Fin
<>Si variable [0011:Argent milliers] 4
<><>Afficher une image: 10, 4, (126, 225)
<>Fin
<>Si variable [0011:Argent milliers] 5
<><>Afficher une image: 10, 5, (126, 225)
<>Fin
<>Si variable [0011:Argent milliers] 6
<><>Afficher une image: 10, 6, (126, 225)
<>Fin
<>Si variable [0011:Argent milliers] 7
<><>Afficher une image: 10, 7, (126, 225)
<>Fin
<>Si variable [0011:Argent milliers] 8
<><>Afficher une image: 10, 8, (126, 225)
<>Fin
<>Si variable [0011:Argent milliers] 9
<><>Afficher une image: 10, 9, (126, 225)
<>Fin
<>//Ceci est un commentaire qui sert de séparation.
<>Attendre : 0.2 secondes


Maintenant, il faut faire pareil avec les autres évènements communs. Bon, il faut pas oublier de changer quelques trucs, je vais vous montrer ce que vous allez devoir changer :

- La variable, évidemment (pour les centaines, ne mettez pas la variable "Argent milliers" mais la variable "Argent centaines" par exemple).

- Le numéro de l'image à afficher (pour les milliers j'ai mis "10", pour les centaines mettez "11").

- Les coordonnées de l'image (les milliers doivent êtres devant tous les autres chiffres, les centaines devant les dizaines, et les dizaines devant les unités, donc les unités sont toutes derrière, logique.), pour éviter que vos chiffres soient tous tassés à la même position !


Conseils d'amélioration

C'est déjà la fin de ce tuto, mais pas de votre système. Voici 2 idées d'améliorations :

- Vous pouvez enlever les 0 inutiles. (actuellement, par exemple, si on à 52 dans la variable "argent", ça va afficher 0052.) Modifiez et jouez avec les conditions pour enlever ça, ce n'est pas excessivement compliqué.

- Mettre plus d'argent maximum. (Vraiment facile. La division doit être multipliée par 10 à chaque chiffre supérieur)

- Mettre tout ça dans un seul événement (il suffit de mettre tout à la suite pour cela)

Questions fréquentes

Mon jeu raaaaaaaame à mort !
Pas de panique ! Il vous suffit de tout mettre dans un seul événement commun à la suite, avec des "Attendre 0,2 secondes" ou "10 frames" entre chaque bloc de 10 conditions. Ainsi donc, ça ramera beaucoup moins Wink

Ça rame toujours !!!
Une astuce est de faire s'afficher vos chiffres uniquement lorsque votre variable change de valeur. Pour cela, stockez votre variable X dans une variable old_X une première fois. Dans une boucle, vous comparez alors si la variable old_X est différente de la variable X : dans ce cas vous affichez vos nombres et donnez à nouveau à la variable old_X la valeur de la variable X. Dans le cas contraire, ne faites rien.

Ça rame quand même !
Je vais vous révéler l'astuce du sioux qu'est Kiliam1110 : importez les images de vos chiffres au format BMP. C'est un format non compressé et l'affichage prend beaucoup moins de temps, par conséquent ça laggue presque pas. Contrairement aux idées reçues, le format BMP n'est pas forcément plus lourd pour des images de quelques pixels seulement (comme celles de vos chiffres). Et puis, entre télécharger 100ko de plus et avoir un jeu injouable à cause des lags...

Les chiffres ne changent pas quand j'ajoute de l'argent !
Si votre argent est une variable, utilisez bien cette variable pour simuler de l'argent ! Sinon rendez égale la variable "Argent" à... votre argent ! Et dans ce cas, retirez directement de l'argent, et ne diminuez pas une variable Wink.

Y'a rien qui s'affiche...
Vérifiez vos affichage d'image, que la transparence ne soit pas à 100% ! Regardez aussi vos condition : est ce la bonne variable ? Regardez aussi vos numéros d'images : il se peut que vous vous soyez trompé et ayez utilisé le même numéro d'images pour plusieurs d'entre elles.

Trobien ! (1)

Commentaires

Alex RoiEsper

J'ai l'impression que ce tuto est carrément obsolète. Zut zut
C'est bon, il a été mis à jour, trop cool !

AristA

Oui il est nul.
Met plutôt celui la (il était de quelqu'un d'autres, mais j'ai tellement tout modifié qu'il est devenu de moi en fait) : http://rmtips.wiki-site.com/index.php/Afficher_une_variable_en_pictures

Alex RoiEsper

Ok merci ! Hihi

EDIT : Mis à jour !

AristA

trop bien le Alex Fufu

Et un tuto de réparé, un Yark yark

AristA

tuto qui avait tellement de faute d'orthographe que si un dyslexique le lisait ils les corrigeraient

J'ai un peu mis à jour, il reste sûrement encore des problèmes de mise en page/des phrases qui ne veulent rien dire. De toute façon ce tutoriel est inutile et si vous vous demandez toujours comment faire ce genre de choses, allez vous pendre vous êtes une merde sur RPG Maker bande de zutres.

Alex RoiEsper

Tro draule

AristA

[size=99999]oui.[/size]

Daragonis

Nécro-Comment
Écrire un commentaire

Pour pouvoir poster un commentaire, vous devez être connecté sur votre compte. Si vous n'avez pas de compte, vous pouvez en créer un très rapidement.