| Une variable dans une expression | |
|
|
Auteur | Message |
---|
sagix Utilisateur confirmé: Rang **
Messages : 498 Localisation : Essonne
| Sujet: Une variable dans une expression Jeu 17 Aoû 2006 - 17:50 | |
| En fait voila mon probleme c'est que je suis un peu feignant et j'ai pas envie de taper plein de ligne pour un truc "simple", donc j'explique le probleme : je crée un perso avec différentes armes qui sont numérotés par une variable que j'ai créer (choix_arme) et aussi qui sont dans un autre object que le perso (heros), et tous mes sprites d'armes sont només ainsi : pour l'arme n°1 spr_arme_1_left , spr_arme_1_right , ... pour l'arme n°2 spr_arme_2_left , spr_arme_2_right , ... et j'ai écrit un script comme ça - Code:
-
if heros.can_shot_arme=true { if image_angle>90 && image_angle<270 {sprite_index=spr_arme_1_left;} else {sprite_index=spr_arme_1_right;} } else { if image_angle>90 && image_angle<270 {sprite_index=spr_arme_1_left_shot;} else {sprite_index=spr_arme_1_right_shot;} } et mon but serait de le transformer pour qu'à chaque fois que je veuille changer d'arme les sprites changent sans devoir taper ce code à chaque fois donc je voudrais faire comme ceci en changeant le numero par ma variable choix_arme (qui est dans l'objet heros ) - Code:
-
if heros.can_shot_arme=true { if image_angle>90 && image_angle<270 {sprite_index='spr_arme_' heros.choix_arme '_left';} else {sprite_index='spr_arme_ 'heros.choix_arme '_right';} } else { if image_angle>90 && image_angle<270 {sprite_index='spr_arme_' heros.choix_arme '_left_shot';} else {sprite_index='spr_arme_' heros.choix_arme '_right_shot;} } mais évidement ce code ne marche pas c'est la que j'ai besoin de votre aide |
|
| |
Bast Administrateur
Messages : 20024 Localisation : Alsace
| Sujet: Re: Une variable dans une expression Jeu 17 Aoû 2006 - 18:13 | |
| Wow c'est déjà un système assez tarabiscoté J'ai donc cru comprendre que tu ne veut pas copier-coller ce script là pour changer à chaque fois le nom des sprites: - Code:
-
if heros.can_shot_arme=true { if image_angle>90 && image_angle<270 {sprite_index=spr_arme_1_left;} else {sprite_index=spr_arme_1_right;} } else { if image_angle>90 && image_angle<270 {sprite_index=spr_arme_1_left_shot;} else {sprite_index=spr_arme_1_right_shot;} } Dans ce cas tu n'a qu'à remplacer dans le code les noms de sprites en question par des variables stockant des chaines de carractères. Ces variables se baseraient sur la variable qui définit l'index de l'arme à partir d'un numéro différent pour chaqune. Tu voit ce que je veut dire ? Il suffit d'intégrer dans le code, à la place des noms de sprites, des noms de variables. Ces variables stockeront à chaque fois un nom de sprite différent selon l'index d'arme sélectionné. Exemple: - Code:
-
if var_index_arme=1 {var_arme_right="spr_arme_right1" var_arme_left="spr_arme_left1"} else if var_index_arme=2 {var_arme_right="spr_arme_right2" var_arme_left="spr_arme_left2"} else if var_index_arme=3 {var_arme_right="spr_arme_right3" var_arme_left="spr_arme_left3"}
etc.. Tu peut placer ça dans un code se trouvant dans l'event Step, juste avant celui ci: - Code:
-
if heros.can_shot_arme=true { if image_angle>90 && image_angle<270 {sprite_index=spr_arme_1_left;} else {sprite_index=spr_arme_1_right;} } else { if image_angle>90 && image_angle<270 {sprite_index=spr_arme_1_left_shot;} else {sprite_index=spr_arme_1_right_shot;} } Comprendo quoi je y'en a dire avec mon clavier ? :-D |
|
| |
sagix Utilisateur confirmé: Rang **
Messages : 498 Localisation : Essonne
| Sujet: Re: Une variable dans une expression Jeu 17 Aoû 2006 - 22:47 | |
| j'ai compris où tu voulais en venir, mais ça fait écrire pas mal de chose, et je voulais faire le feignant mais je ne crois pas que ce soit impossible ce que je demande ou alors les ordis ne seraient pas aussi pas intelligent que je le pensais Bon je vais reprendre le probleme en l'extraillant de mon jeu. On a donc une variable "X" que l'on peut incrémenter et décrémenter par exemple de 0 à 9 avec les touches " - " et "+" . On a aussi des sprites représentant les 10 numéros allant donc de 0 à 9, et dont leur nom se présentent comme ceci : spr_numero_0 spr_numero_1 spr_numero_2 spr_numero_3 spr_numero_4 spr_numero_5 spr_numero_6 spr_numero_7 spr_numero_8 spr_numero_9 Le but est d'affiché le sprite correspondant à la valeur de la variable "X" sans taper un code de ce style : - Code:
-
if X=0 sprite_index=spr_numero_0 if X=1 sprite_index=spr_numero_1 if X=2 sprite_index=spr_numero_2 if X=3 sprite_index=spr_numero_3 if X=4 sprite_index=spr_numero_4 if X=5 sprite_index=spr_numero_5 if X=6 sprite_index=spr_numero_6 if X=7 sprite_index=spr_numero_7 if X=8 sprite_index=spr_numero_8 if X=9 sprite_index=spr_numero_9
Mais plustot un code de ce style : - Code:
-
sprite_index=spr_numero_"X"
Voila mais ce résultat n'a pas lire facile à obtenir. |
|
| |
Bast Administrateur
Messages : 20024 Localisation : Alsace
| Sujet: Re: Une variable dans une expression Jeu 17 Aoû 2006 - 23:03 | |
| Ah oui, bon dans ma logique habituelle je ne voit pas ce que ça peut changer a part quelques copier-coller d'utiliser un script ou l'autre, mais bon tant que c'est possible c'est la demande de la personne qui demande qui supplante les autres demandes. Enfin voila quoi, euhm .. :gniah: Bon je n'ai jamais fait ce genre de choses, mais tu as déjà essayé ça ? - Code:
-
sprite_index=spr_numero_"le_nom_de_la_var_chiffree" Sinon, en toute théorie improvisée, on peut essayer de composer une chaâne de caractères à partir des deux valeurs, et donc d'obtenir un nom de sprite, un peu de cette manière: - Code:
-
var_sprite=string("spr_numero_"+le_nom_de_la_var_chiffree); sprite_index=var_sprite; Enfin actuellement je ne m'y connait pas suffisament en associations de strings et de valeurs .. |
|
| |
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: Une variable dans une expression Jeu 17 Aoû 2006 - 23:43 | |
| je ne pense pas que ca marche ... mais je ne sait comment te dire de faire :snif2: si tes armes ne sont pas annimées , et qu'elle font la même taille (ce qui m'étonnerais) , tu peux peut etre toutes les metre dans un seul sprite, et utiliser ta variable d'arme pour afficher les sous image... vala un GM6 : b.gm6 - 0.01MB |
|
| |
sagix Utilisateur confirmé: Rang **
Messages : 498 Localisation : Essonne
| Sujet: Re: Une variable dans une expression Ven 18 Aoû 2006 - 10:34 | |
| merci [TDT], mais je crois que ta solution ne soit plus compliqué que de faire tous les copiers-collés. Sinon ton idée Bast avec les strings à l'ai pas mal je l'ai essayé tout fonctionne, mais on ne peut pas afficher le sprite voila le .gm6 test.gm6 - 0.01MB |
|
| |
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
| Sujet: Re: Une variable dans une expression Ven 18 Aoû 2006 - 18:00 | |
| Mais en fait ce que tu veux c'est afficher un sprite selon le numéro qui est à la fin de la variable? Bah alors c'est simple, avec ton truc déjà fait ou avec un tableau, mettons qu'on prenne le truc que tu as fait, ce qui est plus simple peut être: sprite_index = "spr_numero_"+string(X); Juste ça et c'est bon. |
|
| |
sagix Utilisateur confirmé: Rang **
Messages : 498 Localisation : Essonne
| Sujet: Re: Une variable dans une expression Dim 20 Aoû 2006 - 10:27 | |
| voila j'ai essayer de faire comme tu as dit mais ça ne marche pas si tu pouvais corriger le gm6 que je comprenne s'il te plait. test2.gm6 - 0.01MB |
|
| |
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
| Sujet: Re: Une variable dans une expression Dim 20 Aoû 2006 - 14:14 | |
| Tiens c'est intriguant, parce qu'il ne reconnaît pas le nom de la sprite, et donc assigne l'id 0, et il n'y a pas de fonctions pour trouver à partir d'une string l'id d'une sprite, or on peut le faire pour les variables avec variable_local_get, mais là... Je vais réflechir, il doit y avoir une parade. |
|
| |
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
| Sujet: Re: Une variable dans une expression Lun 21 Aoû 2006 - 19:14 | |
| J'y ai réflechi lorsque je travaillai ce matin, et en fait je ne sais pas pourquoi je n'y ai pas pensé de suite, on peut passer ce problème aisément en mettant juste ça dans step: execute_string("sprite_index=spr_num_"+string(X)); Cela fonctionne j'ai essayé, et tanpis pour le double post. |
|
| |
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: Une variable dans une expression Lun 21 Aoû 2006 - 22:16 | |
| |
|
| |
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
| Sujet: Re: Une variable dans une expression Lun 21 Aoû 2006 - 22:31 | |
| Bah c'était pas très compliqué, fallait juste être faineant. :hehe: Mais merci tout de même. Cela fait toujours plaisir. :fier: |
|
| |
sagix Utilisateur confirmé: Rang **
Messages : 498 Localisation : Essonne
| Sujet: Re: Une variable dans une expression Ven 25 Aoû 2006 - 17:56 | |
| Merci j'avais pas vu ton message avant et c'est vrai que ça marche |
|
| |
Contenu sponsorisé
| Sujet: Re: Une variable dans une expression | |
| |
|
| |
| Une variable dans une expression | |
|