Aller à la page 1 2
RPG Fusion -
posté le 20/01/2014 à 22:27:27 (381 messages postés)
| Je fus RPG Fusion jadis | Domaine concerné: Event
Logiciel utilisé: RPG Maker 2003
J´ai un problème en ce qui concerne mon jeu de survie.
Voilà, je voulais que le nombre de zombies que l´on a tué apparaisse en au à gauche de l´écran. Jusque là aucun soucis, j´arrive à faire afficher les images et tout...
Seulement, on peut arriver à un stade où l´on tue beaucoup de zombies oO
Et je pense que créer un évènement où l´on doit rajouter :
1
2
3
4
5
| <>Attendre 0.0
<>Si Variable[0100:Zombies Tués] 0
<>Afficher une image : 1, 0 (30, 30)
<>
Fin |
Sachant que l´on peut facilement tuer une centaine de zombie, je ne vais pas répéter tout ça 800 fois
Je voulais savoir si il y avait un moyen plus rapide pour à chaque fois changer l´image pour rajouter 1 zombie tué en plus au compteur.
Merci d´avance
|
Suis Shaper sur Twitter ! - Rejoins le serveur discord de Shaper ! |
Anton_ -
posté le 20/01/2014 à 22:35:43 (1535 messages postés)
| | Oui, il y a la méthode de Joke :
Un fichier de 2400 pixels de haut qui contient un des chiffres de 0 à 9 tous les 240 pixels.
Cette image "chiffre" sera affichée aux coordonnées X et Y.
Le X est le même que pour chiffre seulement.
Par contre, pour le Y ...
il faut prendre la valeur qu'il affiche.
Utilise des divisés et des modulos pour arriver à une variable nommée "chiffre" entre 0 et 9 (le chiffre à sélectionner, en quelque sorte).
ensuite :
Y = chiffre
Y * -240
Y + 1200
Y + [La coordonnée sur l'écran]
Enfin, afficher l'image aux coords X et Y
Comme ça, on a une condition par dizaine, et non dix.
Je suis un peu pressé ce soir, donc je reviendrai demain sur quelques points que tu n'aurais probablement pas compris.
|
Raetribution | Megamike || tutos : 1 2 || Une bonne dose de maths pour la route |
RPG Fusion -
posté le 20/01/2014 à 22:45:19 (381 messages postés)
| Je fus RPG Fusion jadis | Mmhh... Là, je n´ai pas trop compris. Pas du tout meme.
Mais l´idée d´avoir une condition par dizaine et non 10 par dizaine me donne l´envie d´apprendre à utiliser cette solution.
Ca serais super gentil de m´apprendre à bien m´en servir car celà me serais d´une très grande aide
|
Suis Shaper sur Twitter ! - Rejoins le serveur discord de Shaper ! |
Anton_ -
posté le 20/01/2014 à 23:10:25 (1535 messages postés)
| | Ah oui, bon ...
Ton nombre de kills se porte sur trois chiffres. Tu as donc ta variable "Total Kills"
Fait une nouvelle variable Chiffre qui égale la variable "Total Kills"
Soit :
-on fait modulo de 10 pour avoir juste le chiffre des unités
-on divise par 10, puis on fait modulo de 10 pour avoir juste le chiffre des dizaines
-on divise par 100 (+ modulo de 10 si ça va plus haut que 999) pour le chiffre des centaines.
Maintenant que t'as ton chiffre, tu vas t'en servir pour déterminer la coordonnée Y d'affichage de l'image.
attention, grande image :
Spoiler (cliquez pour afficher)
Cette image fait donc 2400 px de haut, et à tous les 240 px d'intervalle, un chiffre y est posé.
ça tombe bien, 240 px, c'est la taille de l'écran, donc il suffit de faire +240 px sur la variable Y pour avoir le chiffre suivant sur le même emplacement, sans afficher un autre chiffre !
regarde encore une fois mon précédent post :
le -1200 dans ma formule, c'est dû au fait que l'image s'affiche sur son CENTRE, donc 2400 / 2 = 1200
et après, tu ajoutes sur le Y une coordonnée entre 0 et 240 pour la mettre quelque part sur l'écran (et pour le X, c'est la même chose qu'un chiffre unique)
Ensuite, je pense que tu est assez futé pour afficher les centaines à gauche des dizaines, à gauche des unités.
|
Raetribution | Megamike || tutos : 1 2 || Une bonne dose de maths pour la route |
Hellper -
posté le 20/01/2014 à 23:13:18 (5402 messages postés)
| Tonton Hellper | Anton_ a dit:
on fait modulo de 10 pour avoir juste les unités
on divise par 10, puis on fait modulo de 100 pour avoir juste les dizaines
on divise par 100 (+ modulo de 1000 si ça va plus haut que 999) pour les centaines..
|
Fixed
|
La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux |
Anton_ -
posté le 20/01/2014 à 23:16:21 (1535 messages postés)
| | Ce qu'on veut comme résultat c'est le chiffre : un nombre entre 0 et 9
Réfléchis un peu, si tu appliques le modulo 10 ... keskispasstildonc ?
edit rapido : bon en même temps, j'ai mit dizaine, centaine... c'est edité.
|
Raetribution | Megamike || tutos : 1 2 || Une bonne dose de maths pour la route |
RPG Fusion -
posté le 21/01/2014 à 07:18:42 (381 messages postés)
| Je fus RPG Fusion jadis | Je vais essayer... mais est-ce que tu m´autorise à utiliser l´image ?
EDIT : Pendant que j´y suis, je demande des réponses à une autre problème.
Dans ce jeu, il vas y avoir des claymors posé sur le sol. Je voulais savoir comment on fait un système de détection lorsque l´on est juste devant la claymore. Ensuite, celle-ci doit s´enclencher et exploser.
Dison, que l´animation de l´explosion, je l´ai déjà, ensuite, je vais faire dans la journé ma claymore. Donc je me demandais si je devais faire ça avec des variables où si je devais tout simplement mettre un event "au contact du héro" juste devant la claymore.
Encore merci d´avance
|
Suis Shaper sur Twitter ! - Rejoins le serveur discord de Shaper ! |
Anton_ -
posté le 21/01/2014 à 10:50:39 (1535 messages postés)
| | Pour l'image, pas de problème. C'est rien qu'un brouillon fait en 15 minutes.
Pour la claymore, il y a plusieurs manières de procéder.
J'en ai deux en tête :
- à chaque event claymore, on associe 4 events éparpillés autour qui se déclenchent au contact du héros. Ces 4 events font juste l'appel de la claymore.
(problème : trop d'events sur les cartes rien que pour les claymores ...)
- un processus parallèle gère toutes les claymores selon des variables.
Il faut garder en mémoire les X et les Y de chaque claymore (ex : quand un joueur en pose une)
il faut utiliser la commande "Modifier la position d'un événement" pour que les claymores se placent à la position souhaitée.
Si tes claymores sont déjà placées, il te faudra placer les X et les Y au tout début.
un interrupteur pour chaque claymore indique si elle est placée et non explosée.
Ensuite, dans une boucle avec attente 0.1 sec, tu vérifie la position du héros avec chaque claymore.
et les coordonnées d'une claymore : X et Y
Il faut vérifier à chaque fois si le héros se trouve pile sur une de ces cases :
X+1 et Y
X-1 et Y
X et Y+1
X et Y-1
variables, conditions ... t'as pas de problème la dessus ?
Si la claymore explose, il faut penser à changer l'interrupteur pour empêcher des explosions en boucle.
(problème : X claymores demandent 2X variables et X interrupteurs, et pis c'est un peu long à coder )
|
Raetribution | Megamike || tutos : 1 2 || Une bonne dose de maths pour la route |
RPG Fusion -
posté le 21/01/2014 à 12:43:10 (381 messages postés)
| Je fus RPG Fusion jadis | Le problème de la longueur de l´évènement, je m´en tape un peu
Je mettrais juste des commentaires pour m´y retrouver.
Et pis, si ça c´est long, alors mettre les Dizaines et encore les dizaine d´image pour afficher le nombre de zombies tué c´est énorme
Pour la Claymore, je pense juste utiliser la méthode 2 qui me semble moins compliqué pour le meme résutlat.
Et oui, je n´ai pas de problème avec les conditions, variables et interrupteur
Merci de ton aide, je verrais ce soir si j´arrive à faire ça. E t´en redirais plus après.
Merci pour l´image aussi J´aisserais de m´en servir pour avoir un affichage moins long à coder.
Je dois dire aussi que je vais faire un CMS, ce sera une grande première pour moi qui ne sais pas trop en faire.
Bref, dans ce CMS, je prévois un sous menu item pour s´équiper des armes qu´on possède.
Aussi un sous menu sauvegarde et enfin un sous menu pour quitter. Si vous avez des suggestion/idées, je prends
Merci pour tout
|
Suis Shaper sur Twitter ! - Rejoins le serveur discord de Shaper ! |
Joke -
posté le 21/01/2014 à 17:12:56 (5090 messages postés)
| Bilouteux fou | EDIT : Anton_ m'a devancé, mais bon au moins j'apporte plus d'informations...
Mon image, comme Anton_ :
Spoiler (cliquez pour afficher) Ceci n'est qu'une image, la seule nécessaire à afficher des nombres en pictures.
Je me suis servi de cette technique il y a fort longtemps pour mon jeu, pour afficher les munitions en haut à droite et l'argent en bas à gauche :
C'est très optimisé, aussi bien en terme de longueur de code/facilité qu'en terme de performance.
Attention : Pour ne pas faire lagger le jeu, il faudrait faire en sorte que les images ne s'affichent qu'une seule fois à chaque changement d'écran dans le jeu ! Avec cette technique, un déplacement d'image durant 0 secondes suffit à faire varier l'affichage, c'est beaucoup plus rapide pour RM !
Inutile d'afficher à nouveau les images quand le nombre change, ou pire encore... ne pas les afficher toute les 0sec/0.1sec !!
Une fois que les images sont affichées UNE FOIS, on peut utiliser le même code avec des DÉPLACER IMAGE au lieu des AFFICHER IMAGE !
C'est beaucoup beaucoup plus optimisé !
C'est pourquoi dans mon exemple qui suit, j'affiche des images à une transparence de 100%, pour le cas des 0 inutiles à masquer, j'affiche quand-même l'image, en invisible, pour la déplacer plus tard pour la faire apparaître lorsque le nombre change.
L'exemple qui suit est fait avec des "afficher image", remplacez "afficher" par "déplacer" et ça fonctionne, en plus rapide !
Joke a dit:
En gros au lieu de faire 10 conditions pour les chiffres de 0 à 9, il suffit de créer une image qui intègre déjà tous les chiffres de 0 à 9 chacun décalés verticalement les uns par rapport aux autres de 240 pixels. Comme ça il n'y a que la position Y à calculer et il y a toujours un seul chiffre de l'image qui apparait à l'écran comme tous les autres chiffres de la même image sont en dehors de l'écran (d'où le décalage de 240 pixels, qui est la hauteur de l'écran)
Pour 10 chiffres (0 à 9) l'image fait 10*240=2400 px de haut. Comme l'image est affichée par son centre, il faut additionner la moitié (1200) pour afficher l'image depuis le premier pixel en haut. Si le chiffre tout en haut est 0, et qu'on affiche l'image à la position "x=30, y=100+1200" ça fait qu'à l'écran ça affichera le 0 aux coordonnées "30, 100"
Ce qui fait que pour afficher le contenu de la variable "Chiffre" (contenant un chiffre entre 0 et 9), il y a un calcul simple pour trouver X et Y de l'image :
X = la valeur que tu veux, position X du chiffre à partir du centre
Y = Chiffre*(-240) + 1200 + la valeur que tu veux, position Y du chiffre à partir du haut
Du coup tu peux faire un événement commun "Calcul XY" en mode "appel" qui va convertir la position "Xchiffre, Ychiffre" qui est la position du chiffre à l'écran, en "X, Y", la position de la picture de sorte à afficher le bon chiffre correspondant à la valeur de la variable "Chiffre", aux coordonnées Xchiffre, Ychiffre :
1
2
3
4
5
6
| # événement commun "Calcul XY" en mode appel
<> modifier variable "X" = "Xchiffre"
<> modifier variable "Y" = "Chiffre"
<> modifier variable "Y" multiplier par "-240"
<> modifier variable "Y" additionner "1200"
<> modifier variable "Y" additionner "Ychiffre" |
Quand tu veux afficher un chiffre depuis un événement, c'est maintenant très simple :
1
2
3
4
5
| # modifier d'abord "Chiffre" pour y stocker l'unité, la dizaine, la centaine, etc du nombre que tu veux avec le modulo et la division.
<> modifier variable "Xchiffre" = "20"
<> modifier variable "Ychiffre" = "50"
<> appeler événement commun : "Calcul XY"
<> afficher image "Image0-9" aux coordonnées "X, Y" |
Et l'image sera affichée de sorte à montrer le chiffre contenu dans la variable "Chiffre", et ce fameux chiffre se retrouvera bel et bien aux coordonnées "20, 50" à partir du point haut/centre.
Tu répète ces lignes pour afficher la dizaine après l'unité, la centaine après la dizaine, en ne faisant varier que "Xchiffre" (par soustraction, par exemple) puisque "Ychiffre" ne changera pas si les chiffres sont sur la même ligne.
Par exemple, pour afficher le nombre "PV" avec l'unité aux coordonnées 20, 50 et un espacement de 6 pixels entre les chiffres... Voici le code à faire, commenté en détail :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# On dit quel nombre on veut afficher
<> modifier variable "Nombre" = "PV"
# On dit où on veut placer le nombre
# (Justifié à droite, dans l'exemple)
<> modifier variable "Xchiffre" = "20"
<> modifier variable "Ychiffre" = "50"
# On calcule le chiffre des unités du nombre "Nombre"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" modulo "10"
# On calcule la position de l'image grâce à
# l'événement commun
<> appeler événement commun : "Calcul XY"
# On affiche le premier chiffre des unités
# en affichant l'image aux coordonnées calculées
# par l'événement commun
<> afficher image "1", "Image0-9", "X, Y"
# On dit que le prochain chiffre est 6 pixels à gauche
# du précédent.
<> modifier variable "Xchiffre" soustraire "6"
# On calcule le chiffre des dizaines du nombre "Nombre"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" modulo "100"
<> modifier variable "Chiffre" diviser "10"
# On calcule la position de la nouvelle image
<> appeler événement commun : "Calcul XY"
# On affiche la nouvelle image, chiffre des dizaines
# A une transparence 0% (visible) si la dizaine existe
# A une transparence 100% (invisible) si la dizaine n'existe
# pas, pour ne pas afficher un 0 inutile
Condition : si "Nombre" >= 10
<> afficher image "2", "Image0-9", "X, Y", transparence 0%
Sinon
<> afficher image "2", "Image0-9", "X, Y", transparence 100%
Fin de condition
# C'est toujours pareil, c'est tout simple ! ^^
# Le chiffre des centaines :
<> modifier variable "Xchiffre" soustraire "6"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" modulo "1000"
<> modifier variable "Chiffre" diviser "100"
<> appeler événement commun : "Calcul XY"
Condition : si "Nombre" >= 100
<> afficher image "3", "Image0-9", "X, Y", transparence 0%
Sinon
<> afficher image "3", "Image0-9", "X, Y", transparence 100%
Fin de condition
# Le chiffre des milliers :
<> modifier variable "Xchiffre" soustraire "6"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" diviser "1000"
<> appeler événement commun : "Calcul XY"
Condition : si "Nombre" >= 1000
<> afficher image "4", "Image0-9", "X, Y", transparence 0%
Sinon
<> afficher image "4", "Image0-9", "X, Y", transparence 100%
Fin de condition
|
Sans les commentaires inutiles, ça donne :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| # Nombre à afficher, et position :
<> modifier variable "Nombre" = "PV"
<> modifier variable "Xchiffre" = "20"
<> modifier variable "Ychiffre" = "50"
# Chiffre des unités :
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" modulo "10"
<> appeler événement commun : "Calcul XY"
<> afficher image "1", "Image0-9", "X, Y"
# Chiffre des dizaines :
<> modifier variable "Xchiffre" soustraire "6"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" modulo "100"
<> modifier variable "Chiffre" diviser "10"
<> appeler événement commun : "Calcul XY"
Condition : si "Nombre" >= 10
<> afficher image "2", "Image0-9", "X, Y", transparence 0%
Sinon
<> afficher image "2", "Image0-9", "X, Y", transparence 100%
Fin de condition
# Chiffre des centaines :
<> modifier variable "Xchiffre" soustraire "6"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" modulo "1000"
<> modifier variable "Chiffre" diviser "100"
<> appeler événement commun : "Calcul XY"
Condition : si "Nombre" >= 100
<> afficher image "3", "Image0-9", "X, Y", transparence 0%
Sinon
<> afficher image "3", "Image0-9", "X, Y", transparence 100%
Fin de condition
# Chiffre des milliers :
<> modifier variable "Xchiffre" soustraire "6"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" diviser "1000"
<> appeler événement commun : "Calcul XY"
Condition : si "Nombre" >= 1000
<> afficher image "4", "Image0-9", "X, Y", transparence 0%
Sinon
<> afficher image "4", "Image0-9", "X, Y", transparence 100%
Fin de condition |
Pour afficher le nombre de la variable "MP" au lieu de "PV" tu copie colle le même code, en modifiant uniquement :
- La toute première ligne en mettant "MP" au lieu de "PV"
- Les deux lignes qui suivent, pour positionner le nouveau nombre ailleurs
- L'ID des pictures, pour en utiliser de nouvelles
Les conditions "si "Nombre" >= ..." servent à éviter d'afficher les 0 inutiles, du coup au lieu d'afficher "0012" ça va afficher "12" en empêchant d'afficher les deux premiers "0".
Et voilà comment éviter moulte conditions pour afficher les nombres en picture ! Ca fonctionne pour les chiffres de toute taille. =)
|
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
RPG Fusion -
posté le 21/01/2014 à 20:53:55 (381 messages postés)
| Je fus RPG Fusion jadis | J´ai mais alors... rien compris
Si quelqu´un pouvait me faire ça sur un projet1 vite fait ça serais cool (avec des commentaires pour que je comprenne). Non pas pour que vous fassiez tout les boulot à ma place hein. Mon but est de comprendre, et j´ai appris à faire ce genre de jeu avec le "Système de prog" que m´a donné Kilam1110. (Merci à llui au passage)
Je trouve que je cmprend beaucoup mieux avec un event expliqué dans un projet que les écrits des tutos sur le site.
Merci à ceux qui prendrons la peine de le faire et tot ceux qui m´ont fournis une bonn aide seront mis dans les crédits (a part si ils ne veulent pas)
|
Suis Shaper sur Twitter ! - Rejoins le serveur discord de Shaper ! |
Joke -
posté le 21/01/2014 à 21:07:39 (5090 messages postés)
| Bilouteux fou | Relis, c'est tout. Le code et les commentaires sont là. Tu veux qu'on se fasse chier à uploader un jeu rien que pour que tu voies les même lignes et commentaires sous RM ?
Pour ma part, ma bonté a des limites. Il n'y a pas que nous qui devons nous donner la peine, tu dois t'y mettre avant tout, surtout lorsqu'il s'agit de comprendre ce qu'on s'est déjà donné la peine de t'expliquer. :v
Explique ce que tu n'as pas compris déjà.
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
RPG Fusion -
posté le 21/01/2014 à 21:23:57 (381 messages postés)
| Je fus RPG Fusion jadis | Je n´ai pas compris TOUT l´event qui donne les unités, dizaines, et centaines de l´image.
Je ne comprend pas son fonctionnement et pis tout ...
|
Suis Shaper sur Twitter ! - Rejoins le serveur discord de Shaper ! |
Joke -
posté le 21/01/2014 à 21:45:43 (5090 messages postés)
| Bilouteux fou |
1
2
3
4
5
6
| # événement commun "Calcul XY" en mode appel
<> modifier variable "X" = "Xchiffre"
<> modifier variable "Y" = "Chiffre"
<> modifier variable "Y" multiplier par "-240"
<> modifier variable "Y" additionner "1200"
<> modifier variable "Y" additionner "Ychiffre" |
Tu fais cet événement commun en mode appel pour ne plus avoir à te retaper encore et encore ces vilaines lignes, tu n'auras plus qu'à appeler cet événement, ça te mettra dans les variables X et Y la position de l'image que tu affichera pour afficher un chiffre.
Cette position est calculée en fonction des variables :
- Chiffre, le chiffre à afficher
- Xchiffre, la position X du chiffre à afficher
- Ychiffre, la position Y du chiffre à afficher
En gros, tu dois modifier ces trois variables "Chiffre" "Xchiffre" "Ychiffre" avant d'appeler ton événement commun qui se chargera de calculer les variables "X" et "Y" que tu vas utiliser pour afficher ton image.
Grâce à cet événement commun, tu sais donc afficher n'importe quel chiffre de 0 à 9, comme ça par exemple :
1
2
3
4
5
| <> modifier variable "Chiffre" = "5"
<> modifier variable "Xchiffre" = "20"
<> modifier variable "Ychiffre" = "50"
<> appeler événement commun : "Calcul XY"
<> afficher image "Image0-9" aux coordonnées "X, Y" |
Juste avec ce code, le chiffre 5 sera affiché à l'écran aux coordonnées X=20, Y=50. Sisi, c'est vrai.
Quand je dis "aux coordonnées "X, Y"" je veux dire "aux coordonnées définies par les variables "X" et "Y", calculées par l'événement commun.
Revenons à cet événement commun "CalculXY".
Pourquoi ce calcul ?
Car c'est l'astuce de mettre tous les chiffres dans une seule image, comme ça au lieu d'afficher une image différente par chiffre, tu n'affiche qu'une seule image pour ton chiffre variant de 0 à 9, et on ne voit à l'écran que le chiffre que tu as mis dans la variable "Chiffre", à la position "Xchiffre" et "Ychiffre". Tous les autres chiffres que tu as mis sur ton image se trouveront en dehors de l'écran, et ne seront donc pas visibles.
Pour faire varier le chiffre affiché de 0 à 9, il suffit de calculer sa position Y, de sorte à ce que tous les autres chiffres inclus dans l'image soient en dehors de l'écran. Ce calcul, c'est cet événement commun tout simple que je viens de donner ci-dessus. Je l'ai expliqué :
Citation: il suffit de créer une image qui intègre déjà tous les chiffres de 0 à 9 chacun décalés verticalement les uns par rapport aux autres de 240 pixels. Comme ça il n'y a que la position Y à calculer et il y a toujours un seul chiffre de l'image qui apparait à l'écran comme tous les autres chiffres de la même image sont en dehors de l'écran (d'où le décalage de 240 pixels, qui est la hauteur de l'écran)
Pour 10 chiffres (0 à 9) l'image fait 10*240=2400 px de haut. Comme l'image est affichée par son centre, il faut additionner la moitié (1200) pour afficher l'image depuis le premier pixel en haut. Si le chiffre tout en haut est 0, et qu'on affiche l'image à la position "x=30, y=100+1200" ça fait qu'à l'écran ça affichera le 0 aux coordonnées "30, 100"
Ce qui fait que pour afficher le contenu de la variable "Chiffre" (contenant un chiffre entre 0 et 9), il y a un calcul simple pour trouver X et Y de l'image :
X = la valeur que tu veux, position X du chiffre à partir du centre
Y = Chiffre*(-240) + 1200 + la valeur que tu veux, position Y du chiffre à partir du haut |
Le bête calcul "Y = Chiffre*(-240) + 1200 + la valeur que tu veux" s'explique très facilement :
J'ai déjà expliqué qu'on affichait zéro à la position qu'on veut avec "Y = 1200 + la valeur que tu veux", car 1200 c'est la moitié de la hauteur de l'image, donc en additionnant 1200 on va baisser l'image de la moitié de sa hauteur, comme si on n'affichait plus l'image à partir de son centre, mais à partir du haut de l'image. Comme le 0 est justement en haut de l'image, c'est ce qu'on veut.
Mettons que tu ne veux pas 0, mais 1.
Tu vas monter l'image de 240 pixels vers le haut, car le 1 est 240 pixels plus bas que le 0.
Tu fais donc "Y = 1200 - 240 + la valeur que tu veux" pour afficher ton "1" à la hauteur que tu veux.
Mettons que tu ne veux plus 1, mais 2, tu vas encore déplacer l'image de 240 pixels plus haut.
Tu fais donc "Y = 1200 - 240 - 240 + la valeur que tu veux".
Maintenant, tu vois que :
- Pour "1" tu déplace une fois de 240 pixels vers le haut
- Pour "2" tu déplace deux fois de 240 pixels vers le haut
- Pour "3" tu déplace trois fois de 240 pixels vers le haut
- Pour "0" tu déplace zéro fois de 240 pixels vers le haut
- Pour "Chiffre" tu déplace "Chiffre" fois de 240 pixels vers le haut
D'où le fameux "Y = Chiffre*(-240) + 1200 + la valeur que tu veux"
Maintenant que tu as cet événement commun magique, pour afficher un nombre... je rappelle qu'un nombre est composé de plusieurs chiffres, donc plusieurs images... Par exemple le nombre "1234" va être composé des chiffres 1, 2, 3, 4... Tu me crois ? Et bien pour afficher ce nombre, tu vas afficher les quatre chiffres un par un avec la méthode que je viens d'expliquer au-dessus.
On sait afficher n'importe quel chiffre de 0 à 9, on le sait, mais comment on connait les chiffres qui composent un nombre inconnu ? Les unités, les dizaines, les centaines, les milliers ? Comment savoir que le nombre "1234" est composé des chiffres "1", "2", "3" et "4" et pas autre chose ? Ce nombre pourrait être n'importe quel nombre, et donc, il pourrait être composé de n'importe quels chiffres...
Pour ça on utilise le modulo et la division, qui nous permettent de découper le nombre en chiffres. Ou autrement dit, isoler le chiffre des unités, des dizaines, des centaines...
Mettons, pour le nombre "1234"
Tu veux le chiffre des unités ? Le 4 ?
Tu fais 1234 modulo 10 et tu l'as, le 4.
Tu veux le chiffre des dizaines ? Le 3 ?
Tu fais 1234 modulo 100 divisé par 10 et tu l'as, le 3.
Tu veux le chiffre des centaines ? Le 2 ?
Tu fais 1234 modulo 1000 divisé par 100 et tu l'as, le 2.
Tu veux le chiffre des milliers ? Le 1 ?
Tu fais 1234 modulo 10000 divisé par 1000 et tu l'as, le 1.
Ou tu divise directement par 1000, sans faire de modulo, si ton nombre n'ira jamais plus haut que 9999.
Comment ça fonctionne ?
La flemme de t'expliquer la magie du modulo, dis toi qu'avec un modulo décimal (modulo 10, 100, 1000, 1000), c'est magique : Le nombre de zéro c'est le nombre de chiffres que tu garde à partir des unités.
Tu prends le nombre "1234", tu fais "modulo 100" il y a deux zéros, donc ça te donne les deux premiers chiffres à partir des unités : "34"
Tu divise "34" par "10", c'est magique, ça te donne "3". On peut dire que pour la division par "10, 100, 1000, 10000", le nombre de zéro c'est le nombre de chiffres que tu vas retirer. C'est juste un moyen de se rappeler.
Tu prends le nombre "12345678".
Tu veux récupérer le chiffre des milliers.
Tu fais "modulo 10000" pour avoir "5678", car quatre zéros = garder les quatre derniers chiffres.
Tu fais "diviser par 1000" pour avoir "5", car trois zéros = retirer les trois derniers chiffres.
Tu as le chiffre des milliers.
L'histoire des zéros, c'est vraiment un pense-bête, très bête, ce n'est rien d'une définition surtout.
Tu reviens donc à ton formidable événement commun qui va afficher le chiffre que tu veux à la position que tu veux.
Eh bien grâce à lui tu vas faire :
- Je prends mon nombre
- Je le coupe à coup de division/modulo pour avoir le premier chiffre, que je met dans la variable "Chiffre"
- J'utilise l'événement commun pour avoir les coordonnées de l'image pour avoir ce premier chiffre contenu dans la variables "Chiffre", affiché aux coordonnées contenues dans les variables "Xchiffre" "Ychiffre"
- J'affiche l'image aux coordonnées contenues dans les variables "X" et "Y" calculées par mon événement commun.
- Je refais pareil pour le deuxième chiffre, le troisième, le quatrième.
C'est exactement ce que fait ce deuxième événement, qui va t'afficher ton joli nombre chiffre par chiffre là où tu veux à l'écran :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# On dit quel nombre on veut afficher
<> modifier variable "Nombre" = "PV"
# On dit où on veut placer le nombre
# (Justifié à droite, dans l'exemple)
<> modifier variable "Xchiffre" = "20"
<> modifier variable "Ychiffre" = "50"
# On calcule le chiffre des unités du nombre "Nombre"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" modulo "10"
# On calcule la position de l'image grâce à
# l'événement commun
<> appeler événement commun : "Calcul XY"
# On affiche le premier chiffre des unités
# en affichant l'image aux coordonnées calculées
# par l'événement commun
<> afficher image "1", "Image0-9", "X, Y"
# On dit que le prochain chiffre est 6 pixels à gauche
# du précédent.
<> modifier variable "Xchiffre" soustraire "6"
# On calcule le chiffre des dizaines du nombre "Nombre"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" modulo "100"
<> modifier variable "Chiffre" diviser "10"
# On calcule la position de la nouvelle image
<> appeler événement commun : "Calcul XY"
# On affiche la nouvelle image, chiffre des dizaines
# A une transparence 0% (visible) si la dizaine existe
# A une transparence 100% (invisible) si la dizaine n'existe
# pas, pour ne pas afficher un 0 inutile
Condition : si "Nombre" >= 10
<> afficher image "2", "Image0-9", "X, Y", transparence 0%
Sinon
<> afficher image "2", "Image0-9", "X, Y", transparence 100%
Fin de condition
# C'est toujours pareil, c'est tout simple ! ^^
# Le chiffre des centaines :
<> modifier variable "Xchiffre" soustraire "6"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" modulo "1000"
<> modifier variable "Chiffre" diviser "100"
<> appeler événement commun : "Calcul XY"
Condition : si "Nombre" >= 100
<> afficher image "3", "Image0-9", "X, Y", transparence 0%
Sinon
<> afficher image "3", "Image0-9", "X, Y", transparence 100%
Fin de condition
# Le chiffre des milliers :
<> modifier variable "Xchiffre" soustraire "6"
<> modifier variable "Chiffre" = "Nombre"
<> modifier variable "Chiffre" diviser "1000"
<> appeler événement commun : "Calcul XY"
Condition : si "Nombre" >= 1000
<> afficher image "4", "Image0-9", "X, Y", transparence 0%
Sinon
<> afficher image "4", "Image0-9", "X, Y", transparence 100%
Fin de condition
|
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
RPG Fusion -
posté le 21/01/2014 à 22:50:02 (381 messages postés)
| Je fus RPG Fusion jadis | Citation: La taille de l´image n´est pas conforme. |
Décidément,, je ne peut pas mettre l´image avec les neufs chiffre. Comment je fais ?
|
Suis Shaper sur Twitter ! - Rejoins le serveur discord de Shaper ! |
Maelstorm -
posté le 21/01/2014 à 22:54:05 (3984 messages postés)
| Une chance sur un million | il faut la mettre directement dans le fichierdes images du projet, un truc comme ça si je dis pas de bêtise ...
ça serais pas plus simple de lui donner l'adresse du tuto de joke qui explique ça ?
parce que oui joke a fait un tuto là dessus et il est même bien pratique ...
|
Maelstorm -
posté le 21/01/2014 à 23:05:36 (3984 messages postés)
| Une chance sur un million | non il a refait le tuto ... il aurais pu s'économiser grandement, pauvre joke ...
|
RPG Fusion -
posté le 21/01/2014 à 23:06:44 (381 messages postés)
| Je fus RPG Fusion jadis | Merci pour l´astuce, ça marche
Petit problème pour l´image que l´on m´a donné. Elle n´a pas la transparance, donc sur la map, il y a labarre violet.
|
Suis Shaper sur Twitter ! - Rejoins le serveur discord de Shaper ! |
Joke -
posté le 22/01/2014 à 09:50:51 (5090 messages postés)
| Bilouteux fou | Pour le lien du tuto, c'est simple... je ne l'ai jamais écrit encore ! x) Mais je devrais m'y mettre. Je me suis auto-quoté depuis une explication que j'avais effectivement déjà faite sur un autre topic d'aide.
Pour l'image, tu as utilisé celle de Anton_ ?
Pour la mienne, exceptionnellement, il faut additionner 1085 à Y au lieu de 1200, dans l'événement commun "Calcul XY", parce que j'ai fais le radin en supprimant le bas inutile de l'image et du coup mon image fait 2170 pixel de hauteur au lieu de 2400.
Avec mon image ça devrait être bon pour la transparence, sauf que j'imagine que le style des caractères ne te convient pas.
Le mieux c'est de faire l'image toi-même, comme ça le style des chiffres c'est le tien. Tu as déjà deux exemples pour t'inspirer.
Si t'as toujours des problèmes avec la transparence, poste ton image ici pour qu'on indexe mieux les couleurs.
Il me semble que RPG Maker prend par défaut la première couleur de l'index des couleurs pour couleur transparente. Mais il faudrait savoir...
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
RPG Fusion -
posté le 22/01/2014 à 11:32:19 (381 messages postés)
| Je fus RPG Fusion jadis | Bon, j´ai terminé ce système d´affichage qui est opérationnelle (merci Joke)
Donc je vais surement commencer les claymores et je vais me speed pour faire les 70 derniers zombies.
Ensuite, je ferais un CMS et enfin, je pourrais sortir une démo.
Si vous avez des propositions pour améliorer le jeu, je suis grandement preueneur.
Mais là, je poste surtout pour le synopsis. Je n´arrive pas à le construire. Si vous avez des idées,
Merci de m´en passer
(Synopsis => Ma grande faiblesse ^^)
|
Suis Shaper sur Twitter ! - Rejoins le serveur discord de Shaper ! |
Joke -
posté le 22/01/2014 à 19:40:47 (5090 messages postés)
| Bilouteux fou | RPG Fusion a dit:
Si vous avez des propositions pour améliorer le jeu, je suis grandement preueneur.
|
Si tu veux optimiser encore l'affichage des nombres à l'écran (en terme de performance) tu peux nous dire comment tu utilise le système d'affichage que j'ai donné (quand est-ce que tu affiche, comment tu lance le code, si c'est affiché tout le temps dans le jeu... screenshot de tes événements)
Parce que j'ai dis ça plus haut :
Joke a dit:
Attention : Pour ne pas faire lagger le jeu, il faudrait faire en sorte que les images ne s'affichent qu'une seule fois à chaque changement d'écran dans le jeu ! Avec cette technique, un déplacement d'image durant 0 secondes suffit à faire varier l'affichage, c'est beaucoup plus rapide pour RM !
Inutile d'afficher à nouveau les images quand le nombre change, ou pire encore... ne pas les afficher toute les 0sec/0.1sec !!
Une fois que les images sont affichées UNE FOIS, on peut utiliser le même code avec des DÉPLACER IMAGE au lieu des AFFICHER IMAGE !
C'est beaucoup beaucoup plus optimisé !
C'est pourquoi dans mon exemple qui suit, j'affiche des images à une transparence de 100%, pour le cas des 0 inutiles à masquer, j'affiche quand-même l'image, en invisible, pour la déplacer plus tard pour la faire apparaître lorsque le nombre change.
L'exemple qui suit est fait avec des "afficher image", remplacez "afficher" par "déplacer" et ça fonctionne, en plus rapide !
|
Et j'avoue que c'est pas clair du tout, la mise en place de ce genre d'optimisation dépend de l'utilisation qu'on fait de l'affichage du nombre, comment on l'appelle, quand est-ce qu'il est affiché... Les méthodes sont multiples et je peux conseiller encore si tu as réussi à suivre jusque là. ^^
Il faut savoir que tout ce qui est "affichage d'image" ça sera ce qui ralentira le plus ton jeu, si tu as un bon ordi tu ne t'en rends pas forcément compte mais tout le monde n'a pas une bonne machine.
Réfère toi à cet article pour mieux comprendre certaines sources de lag et comment les éviter
;)
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
RPG Fusion -
posté le 23/01/2014 à 07:32:19 (381 messages postés)
| Je fus RPG Fusion jadis | Oui mais là, le jeu ne lag pas du tout. Meme sur mon ordi pour dire. Donc je me fais aucun soucis de ce coté là
|
Suis Shaper sur Twitter ! - Rejoins le serveur discord de Shaper ! |
Aller à la page 1 2Index du forum > Entraide > [RPG Maker 2003] Problème avec les images
|