Page 1 sur 1

[OK] Changer le champs d'une structure (ds procédure/macro)

Publié : mar. 01/nov./2011 17:18
par blendman
salut

J'aimerai savoir s'il est possible de faire ce genre de chose :

Code : Tout sélectionner

Structure s_option
  shado.s
  blur.s
  light.s
EndStructure
opt.s_option

Structure buton
  txt$
EndStructure
buton.buton

Macro changeOption(param,val)
  opt\param = Str(val)
EndMacro

changeOption(shado.s,2)
Debug opt\shado

buton\txt$ = "shado"
changeOption(buton\txt$,2)
Debug opt\shado
En fait, j'avais utilisé ce principe avec un gadget, et je récupérer "shado" avec getgadgettext() et ça marchait.
Mais je n'arrive pas ici, et je n'ai pas droit aux gadgets.

En fait, j'ai crée des cases à cocher dans mon jeu, et j'aimerai effectuer les changements sans devoir les noté sur chaque case à cocher, je voulais utiliser une procédure ou une macro pour ça (car j'ai beaucoup de cases à cocher sur certains menus :))

EDIT : En fait, je chercher le moyen de changer le paramètre/champs d'un structure dans une macro ou une procédure, je ne sais pas si c'est possible

Avez-vous une idée d'une telle manipulation ?

Merci

Re: macro et texte en paramètre

Publié : mar. 01/nov./2011 23:11
par PAPIPP
Bonjour blendman.
Peut être comme cela.

Code : Tout sélectionner

Structure s_option
	shado.s
	blur.l
	light.s
EndStructure
opt.s_option

Structure buton
	txt$
EndStructure
buton.buton

Macro changeOption(param,val)
	opt\param=val
EndMacro

changeOption(shado,Str(2))
Debug opt\shado

buton\txt$="shado"
changeOption(shado,Str(4))
Debug opt\shado
changeOption(blur,7)
Debug opt\blur
text$="Bonjour"
changeOption(light,text$)
Debug opt\light

Re: macro et texte en paramètre

Publié : mer. 02/nov./2011 10:01
par blendman
ah mince, je me suis trompé dans mon énoncé, désolé, je voulais dire ça (j'ai corrigé le 1er message):

Code : Tout sélectionner

buton\txt$ = "shado"
changeOption(buton\txt$ ,2)
Debug opt\shado
En fait, je souhaite remplacer buton\txt$ par shado,
- et donc changeoption(buton\txt$ ,2) deviendrait : changeoption(shado ,2)
- et j'aurai comme résultat opt\shado=2

En fait, je chercher le moyen de changer le paramètre/champs d'un structure dans une macro ou une procédure, je ne sais pas si c'est possible

Re: obtenir le champs d'une structure dans une procédure/mac

Publié : mer. 02/nov./2011 11:40
par PAPIPP
Bonjour Bledman
OK Alors comme cela

Code : Tout sélectionner

Structure s_option
	shado.s
	blur.l
	light.s
EndStructure
opt.s_option

Structure buton
	txt$
EndStructure
buton.buton
Macro chg(champ)
  champ
EndMacro

; Macro changeOption(param,val)
; 	opt\param=val
; EndMacro
Macro chgOpt(param,val)
  opt\chg(param)=val
EndMacro
; changeOption(shado,Str(2))
; Debug opt\shado
; 
; buton\txt$="shado"
; changeOption(shado,Str(4))
; Debug opt\shado
; changeOption(blur,7)
; Debug opt\blur
; text$="Bonjour"
; changeOption(light,text$)
; Debug opt\light
text$="Bonjour 2"

chgOpt(shado,text$)
Debug opt\shado
chgOpt(Blur,5)
Debug opt\blur

Re: obtenir le champs d'une structure dans une procédure/mac

Publié : mer. 02/nov./2011 12:00
par blendman
Merci, mais hélas, ce n'est toujours pas ça :p

Voici ce que je veux faire :

Code : Tout sélectionner

buton\txt$="shado"
chgOpt(buton\txt$,Str(4))
Debug opt\shado
Je veux qu'il me remplace : buton\txt$ dans chgOpt(buton\txt$,Str(4)) et donc que j'obtienne : chgOpt(shado,Str(4)) (car buton\txt$="shado")
et donc que le Debug opt\shado me donne 4

je ne sais pas si c'est possible ;)

Re: Changer le champs d'une structure dans une procédure/mac

Publié : mer. 02/nov./2011 19:57
par blendman
bon, je crois avoir trouvé une solution pas mal.

L'utilité de cette technique, c'est pour réaliser une interface avec un screen, donc des interfaces dans les jeux :D !

Le code :

Code : Tout sélectionner

Structure s_option
  ok.a
EndStructure
 
Global NewMap option.s_option()

Procedure AddElmt(key$,val.a=0)
AddMapElement(option(),key$)
option(key$)\ok = val
EndProcedure

AddElmt("Shado")
AddElmt("Light")
AddElmt("Blur")

Structure buton
   txt$
EndStructure
buton.buton

Macro chgOpt(param,val)
  option(param)\ok=val
  Debug option(param)\ok
EndMacro

buton\txt$="shado$"
chgOpt(buton\txt$,1)
buton\txt$="Blur"
chgOpt(buton\txt$,2)
Explication :
- en gros, dans un jeu, on peut avoir des options ou devoir changer des variables en fonction de valeur données par des boutons . Avec des gadgets c'est facile, mais avec un screen pas de gadget disponible. Donc, on doit créer son interface. Et donc, en faisant quelque chose de simple comme : cliquer sur un bouton nous donne sa valeur + son nom, peut facilement maintenant modifier des variables de type options avec juste 2 ou 3 procédures, sans devoir faire un code trop long :)

Et là, cette technique marche super bien :).