J'ai fait un jeu de serpents mais quand par exemple je vais à droite et je clique sur & en même temps que je pense qu'il est entré en collision avec lui-même et qu'il est mort.Canvas snake bug event
le code pour le concours complet est:
$(document).keydown(function(e){
var key = e.which;
if(key == "37" && dir!= "right") dir = "left";
else if (key == "38" && dir != "down") dir = "up";
else if (key == "39" && dir != "left") dir = "right";
else if (key == "40" && dir != "up") dir = "down";
})
J'ai ce code dans une méthode de peinture qui obtient repeint tous les 60ms
var headX = snakeArray[0].x;
var headY = snakeArray[0].y;
//directions
if (dir == "right") headX++;
else if (dir == "left") headX--;
if(dir =="up") headY--;
else if (dir == "down") headY++;
//game over clause
if (headX == -1 || headX == w/cellSize || headY == -1 || headY == h/cellSize || CheckCollision(headX,headY, snakeArray))
{
//restart game
init();
return;
}
Pour tester le jeu vous-même: http://www.taffatech.com/Snake.html
Savez-vous quelle serait la meilleure façon de procéder? – bob
Je prendrais une liste appelée "keyqueue" ou quelque chose et ajouterais un élément qui maintient la direction pressée chaque fois qu'un bouton est pressé. Ensuite, à chaque rendu je libérerais le premier élément de la liste (si la liste n'est pas vide) et ferais la chose avec, que vous avez fait dans la fonction de pression de touche. C'est tout. – TheOneAndOnly
Merci, je n'ai pas fait ce que vous avez dit mais à la place j'ai utilisé une variable booléenne qui est fausse ou vraie basée sur si vous pouvez déplacer et ne laisse que 1 déplacer par image. Merci ça marche! – bob