Page 1 sur 1

variable+procedure

Publié : lun. 28/mars/2005 19:54
par eRz0r
Hello, me revoilà encore avec un problème. En fait j'ai une procédure qui calcule le déplacement de mon sprite. Cette procédure contient une variable qui est ACCESPEED.f

Code : Tout sélectionner

Procedure machin_truc()
dt=2
ACCESPEED.f=500

  Route\CoefFrottement=0.015
  Route\Vitesse+(Route\Acceleration*dt/ACCESPEED.f) 
  Route\Vitesse/(1+(Route\CoefFrottement*dt)) 
  Route\PositionX+(Route\Vitesse*dt) 

EndProcedure 
Mon problème, est que j'aimerai pouvoir déplacer la variable ACCESPEED.f en dehors de la procédure, comme ceci par exemple :

Code : Tout sélectionner

ACCESPEED.f=500
Procedure machin_truc()
dt=2

  Route\CoefFrottement=0.015
  Route\Vitesse+(Route\Acceleration*dt/ACCESPEED.f) 
  Route\Vitesse/(1+(Route\CoefFrottement*dt)) 
  Route\PositionX+(Route\Vitesse*dt) 

EndProcedure 
Mais le problème, est que ça ne va pas, le sprite ne fonctionne plus du tout une fois le programme lancé.

Comment faire ?

eRz

Publié : lun. 28/mars/2005 20:03
par cederavic
2 choix s'offrent à toi :

Code : Tout sélectionner

Global ACCESPEED.f
  ACCESPEED =500

Procedure machin_truc()
dt=2

  Route\CoefFrottement=0.015
  Route\Vitesse+(Route\Acceleration*dt/ACCESPEED)
  Route\Vitesse/(1+(Route\CoefFrottement*dt))
  Route\PositionX+(Route\Vitesse*dt)

EndProcedure
et

Code : Tout sélectionner

Procedure machin_truc(ACCESPEED.f)
dt=2

  Route\CoefFrottement=0.015
  Route\Vitesse+(Route\Acceleration*dt/ACCESPEED)
  Route\Vitesse/(1+(Route\CoefFrottement*dt))
  Route\PositionX+(Route\Vitesse*dt)

EndProcedure


; En lançant
machin_truc(500)


Publié : lun. 28/mars/2005 20:09
par eRz0r
Erf j'avais deja testé le 2e ça marchais pas, et la je viens de restester ces 2 solutions ça fonctionne toujours pas :(

eRz

Publié : lun. 28/mars/2005 21:03
par Le Soldat Inconnu
pas normal, avec la variable en global, ça doit marcher sans problème.

Publié : mar. 29/mars/2005 14:02
par eRz0r
Erf c'est bon ça marche merci, en fait c'est la valeur 500, j'avais mis 1200 à la place de 1.200 ;)

eRz

Publié : mar. 29/mars/2005 14:13
par eRz0r
Autre question :)

Code : Tout sélectionner

  Global acce_pot_debride.f
  acce_pot_debride.f=0
  
  Global acce_pot_homologue.f
  acce_pot_homologue.f=0
  
  Global acce_pot_non_homologue.f
  acce_pot_non_homologue.f=0
  
  Global ACCE_POT.f
  ACCE_POT.f=acce_pot_debride.f+acce_pot_homologue.f+acce_pot_non_homologue.f
Il n'y aura pas un moyen plus court et plus propre d'écrire ça ? Car ma liste est assez longue lol.

eRz

Publié : mar. 29/mars/2005 14:34
par Le Soldat Inconnu
ben, si les valeurs ne change jamais, tu peux faire des constantes. ce sera nettement moins lourd à la fois à écrire et pour le programme en temps d'éxécution

Publié : mar. 29/mars/2005 14:44
par eRz0r
Erf le probleme c'est que les valeurs vont changés :s

Bah c'est pas grave je vais faire ça dans un fichier apart :p

eRz

Publié : mar. 29/mars/2005 16:29
par cederavic
tu peux aussi le faire sur plusieur lignes :

Code : Tout sélectionner

; au lieu de 
a = b + c + d + e + f + g
; sur plusieur lignes
a = b
a + c
a + d
a + e
a + f
a + g
petite remarque aussi : tu n'a pas besoin de spécifier les type de ta variable a chaque foi que tu l'utilise du moment que tu l'initialise avec .x (par exemple, au debut tu as Global a.f, plus loin dans le code tu peux faire a + 0.75)

Publié : mar. 29/mars/2005 19:27
par Le Soldat Inconnu
tu peux aussi faire

Global truc, bidule, machin

au lieu de faire 36 global

Publié : mer. 30/mars/2005 13:34
par eRz0r
Ouep mais alors ma ligne sera trop grande, j'ai 50 parametres ^^

eRz

Publié : mer. 30/mars/2005 13:38
par Le Soldat Inconnu
ben fait des lignes de 10 ou fait des groupes par type :)