Squall2x
-
5 avril 2013 à 23:38
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
7 avril 2013 à 16:59
Bonjour, je suis débutant en c# et j'ai créé un petit jeu dans lequel je dois déplacer mon personnage, j'utilise l’événement KeyPress,
seulement, lorsque je reste appuyé sur la touche de déplacement, le personnage se déplace d'un cran. Il y a alors un temps d'attente, et il se déplace ensuite normalement. Il agit de la même manière que si je reste appuyé sur une lettre dans un traitement de texte.
J'aimerai savoir s'il est possible de déplacer mon personnage de façon uniforme, merci beaucoup.
Voici mon code :
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 7 avril 2013 à 16:59
Salut,
c'est purement le comportement des messages windows, tu ne pourras pas le changer sans changer la structure de ton appli.
La base structurelle d'un "jeu" est une boucle infinie temporisée par le "framerate" (qui donne la vitesse générale des anims).
En gros :
// 1 flag pour savoir si la touche Z est pressée
private bool _keyZPressed;
// L'event KeyPress ne fait que activer le flag
private void Map_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Z)
_keyZPressed = true;
}
// L'event keyUp désactive le flag
private void Map_KeyUp(object sender, KeyPressEventArgs e)
{
_keyZPressed = false;
}
// Dans la boucle du jeu (peut etre un Timer dans ton cas)
{
if( CALCUL_FRAMERATE()==true )
{
if( keyZPressed )
{
barre.deplacer_barre('Z');
this.Controls.Add(barre.ImgBarre);
}
}
}