problème gestion de clavier
Publié : jeu. 20/avr./2006 21:33
Bonjour à tous
Nouveau avec purebasic depuis 1 semaine, j'ai certain problèmes avec le code suivant:
Le problème semble venir de la procédure TesterClavier. Si j'appuie sur la touche Escape le programme se termine normalement mais appuyer sur la touche HAUT ou BAS (flèche) ou P (pause) n'a aucune incidence et je ne vois vraiment pas pourquoi.
Je sais que c'est surement une erreur stupide mais, désolé, je ne la voie vraiment pas! Tout aide serait grandement appréciée!
merci à tous
patbou
Nouveau avec purebasic depuis 1 semaine, j'ai certain problèmes avec le code suivant:
Code : Tout sélectionner
; ------------------------------------------------------------
; Démo 1 - Jeu de KONG - version PureBasic 3.94
; ------------------------------------------------------------
; ----- Procédure - Constantes - Structures - Variables ------
; Déclaration des procédures
Declare TesterClavier()
Declare InitialiseNiveau()
Declare AffichePointage()
Declare TesterAI()
; Constantes
#VITESSE_JOUEUR = 7 ; Vitesse du joueur
#VITESSE_ORDI = 6 ; Vitesse de l'ordinateur
#TOUCHE_PAUSE = 80 ; Correspond au code pour la touche P
; Structures
Structure s_player ; structure pour le joueur et l'ordinateur
y.l ; position y du joueur en question
pointage.l ; pointage du joueur en question
EndStructure
Structure s_balle ; structure pour la balle
x.l ; position x de la balle
y.l ; position y de la balle
xv.l ; vélocité en x de la balle
yv.l ; vélocité en y de la balle
EndStructure
; Variables
Global joueur1.s_player ; on donne le type s_player à joueur1 (joueur humain)
Global joueur2.s_player ; on donne le type s_player à joueur2 (ordinateur)
Global balle.s_balle ; on donne le type s_balle à balle (notre balle de jeu)
; ----- INITIALISATION DU PROGRAMME -----
InitSprite() ; Initialise l'environnement nécessaire au fonctionnement des sprites
InitKeyboard() ; Initialise l'environnement propre à la gestion du clavier
OpenScreen(800,600,32,"Kong") ; Ouvre un nouvel écran pour notre jeu
; Charge en mémoire les sprites
If LoadSprite(0,"player1.bmp") = 0
MessageRequester("Erreur","Impossible de charger le sprite player1.bmp",0)
End ; Quitte le programme
EndIf
If LoadSprite(1,"player2.bmp") = 0
MessageRequester("Erreur","Impossible de charger le sprite player2.bmp",0)
End ; Quitte le programme
EndIf
If LoadSprite(2,"ball.bmp") = 0
MessageRequester("Erreur","Impossible de charger le sprite ball.bmp",0)
End ; Quitte le programme
EndIf
; Affiche le texte de départ
FlipBuffers()
ClearScreen(0,0,0)
StartDrawing(ScreenOutput())
FrontColor(255,255,255)
BackColor(0,0,0)
Locate(400,300)
DrawText("Ready...Set")
Locate(420,330)
DrawText("Go!!!!")
StopDrawing()
FlipBuffers()
Delay(3000)
; Initialise le niveau
InitialiseNiveau()
; Initialise le pointage
joueur1\pointage = 0
joueur2\pointage = 0
; ----- BOUCLE PRINCIPALE DU PROGRAMME -----
Repeat
ClearScreen(0,0,0)
DisplaySprite(2,balle\x,balle\y)
DisplaySprite(0,60,joueur1\y)
DisplaySprite(1,740,joueur2\y)
TesterClavier()
TesterAI()
AffichePointage()
FlipBuffers()
Delay(20)
Until KeyboardPushed(#PB_Key_Escape)
End
; ----- PROCEDURES -----
; Procédure InitialiseNiveau
Procedure InitialiseNiveau()
; Place la balle au centre de l'écran
balle\x = 400
balle\y = 300
; Déplace la balle dans une direction aléatoire
balle\xv = Random(4) + 2
balle\yv = Random(16)+ 2
; Place les joueurs à la bonne position
joueur1\y = 300
joueur2\y = 300
EndProcedure
Procedure TesterClavier()
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Up)
joueur1\y = joueur1\y - VITESSE_JOUEUR
ElseIf KeyboardPushed(#PB_Key_Down)
joueur1\y = joueur1\y + VITESSE_JOUEUR
ElseIf KeyboardPushed(TOUCHE_PAUSE)
ClearScreen(0,0,0)
StartDrawing(ScreenOutput())
FrontColor(255,255,255)
BackColor(0,0,0)
Locate(400,300)
DrawText("Appuyez sur P pour reprendre le jeu...")
StopDrawing()
Repeat
Delay(1)
Until KeyboardPushed(TOUCHE_PAUSE)
EndIf
EndIf
EndProcedure
Procedure TesterAI()
EndProcedure
Procedure AffichePointage()
EndProcedure
Je sais que c'est surement une erreur stupide mais, désolé, je ne la voie vraiment pas! Tout aide serait grandement appréciée!
merci à tous
patbou