Code : Tout sélectionner
;initialisation
InitKeyboard()
InitSprite()
OpenScreen(800,600,32,"Hello")
;variables
down.b=0
right.b=0
one.b=0
;boucle principale
Repeat
;examen du clavier
ExamineKeyboard()
;attribution de différentes valeurs aux variables en fonction de la touche pressée
If KeyboardPushed(#PB_Key_Down)<>0
down=1
Else
down=0
EndIf
If KeyboardPushed(#PB_Key_Right)<>0
right=1
Else
right=0
EndIf
If KeyboardPushed(#PB_Key_1)<>0
one=1
Else
one=0
EndIf
;dessiner du texte
StartDrawing(ScreenOutput())
DrawText(4,4,"down : "+Str(down)+" ; right : "+Str(right)+" ; one : "+Str(one))
StopDrawing()
;commandes d'affichage du résultat, puis réinitialisation
FlipBuffers()
ClearScreen(RGB(255,255,255))
Until KeyboardPushed(#PB_Key_Escape)
Bref, ici le principe c'est que quand on appuie sur une touche, on change une variable correspondant à la touche et qu'ensuite on dessine cette valeur sur un écran.
Donc lorsque je presse deux touches simultanément, par exemple EnBas et ADroite, ça fonctionne bien. Mais lorsque je presse les trois en même temps EnBas, ADroite et Touche1, ça ne marche pas et Touche1 est ignorée. Or Touche1 fonctione bien toute seule ou avec une seule autre touche.
Je croyais au début que c'était peut-être parce que PB ne prennait pas à en compte lorsque 3 touches ou plus étaient activées... Mais non! Ca fonctionne bien les 3 en même temps si je remplace EnBas et ADroite par ToucheS et ToucheD par exemple!
J'ai essayé de déplacer ExamineKeyboard() ou d'en mettre plusieurs dans la boucle, mais ça ne marche pas mieux... Je n'y comprends rien.
Alors comment puis-je résoudre ce problème ? S'il n'est pas résolvable, comment puis-je le contourner ?