Jeu de serpent en VB.NET 2008

raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011 - 9 janv. 2010 à 12:41
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011 - 12 janv. 2010 à 17:54
Bonjour,

je suis en train de créer un jeu de serpent avec une picturebox, le serpent est animé il se déplace carré par carré (j'ai fait une fonction sub qui dessine un carré avec deux arguments en faisant 10 lignes), je déplace le serpent avec quatres touches qui changent la direction du serpent mais j'ai l impression que ça bug un peu par rapports aux mouvements qui ne sont pas très jouables, alors au début j'ai essayé diverses techniques puis j'ai trouvé une qui arrange pas mal de choses, c'est à dire relancer le timer :
Timer1.start()
alors que le timer est déja activé, donc je relance le timer comme ceci à chaque changement de direction établi par une touche frappée dans un évenement KeyDown (d'un bouton)...
Mais voilà quand je veux changer de direction rapidement, c'est à dire en pressant deux touches dans une intervale plus courte que la vitesse du timer, la premiere touche est prise en compte mais pas l'autre...

Je voudrais donc que le serpent soit plus 'facile' à diriger... Si vous connaissez une méthode merci de me répondre...

Voilà a+

2 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 janv. 2010 à 09:29
le KeyDown doit etre pris en compte de suite, et pas dans une boucle.

selon la touche pressée, mets a jour une variable direction.

dans une boucle ou un Timer, met a jour la position du serpent
et redessine le serpent.


après, il m'est difficile d'être précis sans plus de détail sur ta façon de faire.


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
12 janv. 2010 à 17:54
Salut Renfield,

je vais apporter quelques précisions, l'evenement keydown est
pris en compte dans un bouton, donc je pense que le timer
est actif en meme temps que l evenement keydown,
dans cet envenement keydown, je regarde la touche frappée,
si c'est haut je met la variable d en 8
si c'est bas je met la variable d en 2
si c'est gauche je met la variable d en 4
si c'est droite je met la variable d en 6
en verifiant bien évidemment la direction précendente pour savoir si la
nouvelle direction est valable (si c est haut alors que le serpent vas en bas
la touche n est pas prise en compte)

Dans le timer, à chaque tick, je regarde la variable d
pour prendre en compte la direction et j'ajoute ansi un
carré, en haut en bas à gauche ou a droite de la tete du serpent...

Donc je ne redessine pas le serpent à chaque fois je me contente de
rajouter un carré en regardant la direction d donc en haut a gauche a droite ou en bas...
0
Rejoignez-nous