Passer de t(x,y)\choix1 à t(x,y)\choix2 avec une variable?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Passer de t(x,y)\choix1 à t(x,y)\choix2 avec une variable?

Message par Huitbit »

J’avais déjà (mal)posé cette question(voir plus loin), Comtois m’avait répondu :

Code : Tout sélectionner

Structure muche 
  mer.b 
  terre.b 
  montagne.b 
EndStructure 

Dim Tablo.muche(5,5) 
Macro Test(x, y, Choix) 
  Tablo(x, y)\Choix 
EndMacro 

Test(2, 2, mer) = 1  
Test(2, 3, montagne) = 1  

Debug Tablo(2, 2)\mer 
Debug Tablo(2, 3)\montagne  

If Test(2, 2, mer) And Test(2, 3, montagne) 
  Debug "c'est bon" 
EndIf
J’étais tellement content de découvrir les macros que je n’ai pas vu que ça ne répondait pas à ma question.

En fait voilà ce que je voulais:
Avec les mêmes noms que plus haut :

Code : Tout sélectionner

If choix =" mer"
     Tablo(2,2)\choix = 5  ;l’ordinateur doit comprendre Tablo(2,2)\mer=5
Endif 
Si je fais ça, PB me répond qu’il ne connaît pas la structure choix.
Je suis tout à fait d’accord avec lui, mais j’aimerais bien écrire une sous-programme où la structure ne serait pas définie (elle s’appellerait « choix ») comme ça, la même procédure pourrait servir pour la mer, la montagne,etc.

Exemple :

Code : Tout sélectionner

Procedure.b detection(x.b,y.b,choix.s)

If  choix="mer"
     Tablo(x,y)\choix = Tablo(x,y)\choix+1
Endif

If  choix="terre"
     Tablo(x,y)\choix = Tablo(x,y)\choix*4
Endif  

Endprocedure
;...
;...
;...
;appels  de la procedure
detection(1,1 , " mer ")
detection(2,3,  " terre ")
…
J'espère que ma question est plus claire :D
Si quelqu'un a déjà fait ça, je suis preneur, car ça évite pas mal de lignes de code :roll:

Ciao!

PS: le passage 2D>3D de la p'tite tortue est impressionnant :P
Elevé au MSX !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Merci ! :D
et comme ça , ça te vas ?

Code : Tout sélectionner

Structure choix
    mer.b
    terre.b
    montagne.b 
    choix.l
EndStructure

Dim choix.choix(5,5)


If choix(2,2)\choix = 5 ; on met le choix (5) dans le tableau en place 2,2
    choix(2,2)\mer.b=5 ;on met la meme valeur dans le tableau mer en place 2,2 !
EndIf

;  maintenant on  a la valeur 5 dans  choix(2,2)\choix et dans  choix(2,2)\ mer.b

linkerstorm
Messages : 20
Inscription : lun. 29/janv./2007 7:13

Si j'ai bien compris

Message par linkerstorm »

Salut Huitbit.

J'ai essayé de comprendre ton problème. Voyons si j'ai réussi.
Je te propose un bout de code simple et dis-moi si cela peut répondre à ton besoin.
Si cela n'est pas le cas, essaies de préciser ce que tu veux obtenir exactement ;)

Voici le code :

Code : Tout sélectionner

Enumeration
	#Paysage_mer
	#Paysage_terre
	#Paysage_montagne
EndEnumeration

Global Dim Tablo(5, 5)

Procedure.l Detection(x.l, y.l, choix.s)
	Select choix
		Case "mer"      : Tablo(x, y) = #Paysage_mer
		Case "terre"    : Tablo(x, y) = #Paysage_terre
		Case "montagne" : Tablo(x, y) = #Paysage_montagne
	EndSelect
EndProcedure

Detection(1, 1, "mer")
Detection(1, 2, "terre")
Detection(1, 3, "montagne")

If Tablo(1, 1) = #Paysage_mer And Tablo(1, 2) = #Paysage_terre
	Debug "C'est bon"
EndIf
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

J'ai trouvé une autre solution!

Message par Huitbit »

Enfin, j'espère...
J'arrive pas trop à être clair avec cette question :?
Merci quand même d'avoir cherché! :wink:

En fait je voulais changer la structure "à distance" grace aux paramètres de la procedure!

J'allais poster un exemple et... :idea:
En fait dans une procedure affichage(choix), je voulais utiliser le tableau
tablo(x,y)\choix, un grand nombre de fois sachant que j'appelerais la procedure dans le prog principal de la manière suivante:
affichage("mer")
affichage("terre")
...
et bien sûr dans la procedure ça deviendrait(pour affichage("mer")):
tablo(x,y)\mer ; (car choix="mer")

:idea: Ben au lieu de remplacer chaque tableau par une macro, je vais remplacer 90% de la procedure(le texte qui ne change jamais, à part la structure des tableaux manipulés) par une macro paramétrable que je commanderai par un if.

if choix="mer"
macro(x,y,mer)
elsif choix="terre"
macro(x,y,terre)
.....

C'était bien avec les macros qu'il fallait travailler
Je donnerai un exemple quand ça sera prêt !

Hasta la vista!
Elevé au MSX !
Répondre