Page 1 sur 1

[Résolu] Problème de clavier.

Publié : sam. 14/mars/2009 22:41
par Norswap
Je suis en train de bricoler un petit jeu et je veux faire apparaitre/disparaitre le menu avec la touche escape.

Seulement voilà, faire apparaitre le menu utilise la bibliotheque Keyboard, tandis que le faire disparaitre utilise un MenuEvent.

Je n'ai pas de problème pour afficher le menu mais quand je veux le fermer avec escape, il revient tout de suite car Keyboard.Pushed détecte la touche toujours pressée.

Cela correspond à cette portion de mon code (pour le moment il y a juste un menu et un sprite qui peut bouger):

Code : Tout sélectionner

Menu:
Menu:
ToggleMenu()
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow : End
      Case #PB_Event_Gadget : Select EventGadget()
        Case 1 : Goto GameLoop
        Case 2 : Goto GameLoop
        Case 3 : End
      EndSelect
      Case #PB_Event_Menu : Select EventMenu()
        Case 1 : Goto GameLoop
        Case 2 : Goto GameLoop
        Case 3 : End
      EndSelect
  EndSelect
ForEver

GameLoop:
ToggleMenu()
Repeat
  FlipBuffers()
  ClearScreen(RGB(0, 0, 0))
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Escape) : Goto Menu : EndIf
  If KeyboardPushed(#PB_Key_Up)     : y - speed : EndIf
  If KeyboardPushed(#PB_Key_Down)   : y + speed : EndIf
  If KeyboardPushed(#PB_Key_Left)   : x - speed : EndIf
  If KeyboardPushed(#PB_Key_Right)  : x + speed : EndIf
  Start3D() : ZoomSprite3D(0, 128, 128) : DisplaySprite3D(0, x, y) : Stop3D()
ForEver
Y a-t-il un moyen de "vider le buffer" du clavier, ou est-ce que vous avez une autre méthode à préconiser ?

Tout à fait autre chose, mais mon jeu (fenêtré) supporte très mal les mises en réduction, redimensionnements et déplacements. Il y a quelque chose que je peux faire pour ça ?


Edit : Comme d'habitude, il suffit que je poste un message pour trouver la solution à un problème que me bloque depuis des heures (grrr, deuxième fois aujourd'hui quand même).
Il suffit de remplacer

Code : Tout sélectionner

If KeyboardPushed(#PB_Key_Escape) : Goto Menu : EndIf
par

Code : Tout sélectionner

If WindowEvent() = #PB_Event_Menu And EventMenu() = 2 : Goto Menu : EndIf
Ce qui non seulement règle le problème du menu mais aussi les problèmes de redimensionnement, réduction, etc oO