ON X GOSUB a,b,c,d,....

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

ON X GOSUB a,b,c,d,....

Message par Backup »

ben oui je trouvais ça pratique les "on x gosub en GFA !!"

pour memo

x=1 ; va envoyer vers a
x=2 ; va envoyer vers b
x=3 ; va envoyer vers c
x=4 ; va envoyer vers d

Code : Tout sélectionner


; dans cet exemple une procedure au hasar va etre choisie !

x=rnd(3)+1
on x gosub a,b,c,d

:D
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

bah euh solution possible...

Code : Tout sélectionner

dim fonctions(3)
fonctions(0) = a()
...
fonctions(3) = d()

...

x = random(3)
callfunctionfast( fonctions(x) )
Dri
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

heu en pure basic !!
Resultat = CallFunctionFast(*PointeurFonction [,Parametre1 [, Parametre2...]])
Description

Appelle une fonction en librairie en utilisant son pointeur obtenu par IsFunction() ou par LibraryFunctionAddress().

oblige a l'enploi de IsFunction() et des pointeurs !

je crois que le X Gosub reste plus simple et plus clair .. :D
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Code : Tout sélectionner

Select Random(3) + 1
  Case 1
    fonction 1()
  Case 2
    fonction 2()
  Case 3
    fonction 3()
  Case 4
    fonction 4()
endselect
Un peu plus lourd mais marche comme tu veux non ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

oui, une simple condition if ou un select comme Oliv
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Dobro a écrit :heu en pure basic !!
Resultat = CallFunctionFast(*PointeurFonction [,Parametre1 [, Parametre2...]])
Description

Appelle une fonction en librairie en utilisant son pointeur obtenu par IsFunction() ou par LibraryFunctionAddress().

oblige a l'enploi de IsFunction() et des pointeurs !

je crois que le X Gosub reste plus simple et plus clair .. :D
Nan nan pas forcément...

Code : Tout sélectionner

procedure test()
  debug "dobro"
endprocedure

ptr = @test()

callfunctionfast(ptr)
Dri
Répondre