repeat
up = 0
down = 0
left = 0
right = 0
If KeyboardPushed(#PB_Key_Up) : up=1 : EndIf
If KeyboardPushed(#PB_Key_Down) :down=1 : EndIf
If KeyboardPushed(#PB_Key_Left) : left=1 : EndIf
If KeyboardPushed(#PB_Key_Right) : right=1 : EndIf
if up = 1
move up + 1
if left =1
move gauche +1
endif
if right = 1
move droite +1
endif
.....
until ce que tu veux ^^
Hello Foosile,
Ta méthode marche mais elle priorise une touche quand plusieurs sont appuyées en même temps.
Typiquement, ce sera toujours la left qui passera en premier...
Je te propose de faire un test global qui ne fait rien bouger dès lors que plusieurs touches sont appuyées
Ensuite, la routine du psy marchera bien.
ex :
nombredetouches=0
if testleftpress : nombredetouches+1 : pressleft=1 : endif
if testrightpress : nombredetouches+1 : pressright=1 : endif
if testuppress : nombredetouches+1 : pressup=1 : endif
if testdownpress : nombredetouches+1 : pressdown=1 : endif
if nombredetouches=1 ; si c'est 1 c'est qu'il y a qu'une et une seule touche d'appuyée
C'est là que tu mets les tests de direction
endif
Je ne sais pas si c'est plus simple que ta routine mais ça évite de différencier les touches les unes par rapport aux autres selon leur rang dans le test...
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Le code de Comtois est le plus efficace
Mais je te propose une petite variante de ma prop qui peut être utile par la suite pour justement gérer plusieurs touches enfoncées en meme tempsex :
nombredetouches=0
if testleftpress : nombredetouches+1 : pressleft=1 : endif
if testrightpress : nombredetouches+2 : pressright=1 : endif
if testuppress : nombredetouches+4 : pressup=1 : endif
if testdownpress : nombredetouches+8 : pressdown=1 : endif
Dans ce cas :
nombredetouches=1 : left est pressée
nombredetouches=2 : right est pressée
nombredetouches=3 = 1 + 2 : left et right sont pressées
nombredetouches=4 : up est pressée
nombredetouches=5 = 1+5 : up et left sont est pressées
...
nombredetouches=15 = 1+2+4+8 : toutes les touches sont pressées
là tu dois pouvoir gérer le dispatch des routines avec un case...