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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

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

Message 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
Dernière modification par blendman le mer. 02/nov./2011 19:58, modifié 4 fois.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: macro et texte en paramètre

Message 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
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: macro et texte en paramètre

Message 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
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

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

Message 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
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

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

Message 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 ;)
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

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

Message 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 :).
Répondre