Bonjours à tous,
Je m'amuse actuellement a programmer un petit jeu avec le module Graphics de ocaml.
Dans ce jeu, je déplace le personnage, non pas avec les touches fléchées qui ne sont pas détectée par Graphics, mais avec les touches Z, Q, S et D, avec
la procédure suivante simplifiée :
Ici le personnage est simplement un cercle et la procédure se termine lors de l'appui sur la touche echap.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 let perso() = let a =ref 0 in let (x,y) = (ref 50,ref 50) in while !a = 0 do let e = wait_next_event [Key_pressed] in match e.key with |'q' -> x := !x - 3; fill_circle !x !y 6; |'z' -> y := !y + 3; fill_circle !x !y 6; |'s' -> y := !y - 3; fill_circle !x !y 6; |'d' -> x := !x + 3; fill_circle !x !y 6; |'\027' -> a := 1; |_ -> () ; done;;
Le problème est lorsqu'on appuie longuement sur la même touche il y a un temps de latence avant que le cercle se déplace en continu,
tout comme lorsqu'on écrit du texte, la lettre de la touche que vous enfoncez s'écrit une fois puis après un temps de latence une succession de fois.
Ce paramètre est modifiable dans l'option clavier du système linux, mais j'aimerai savoir s'il est possible de contourner ce problème dans le module Graphics.
Merci d'avance !
Partager