J'ai codé une version très basique du jeu du Snake et je n'arrive pas a faire en sort d'annulé une collision. Si par exemple le serpent avance de la droite vers la gauche, et que j'appuie sur la flèche gauche. ( alors il y a une collision que j'aimerai annulé. ) Vous pouvez voir le code entier sur codePen
Et ci dessous la fonctions qui gère les colissions.
//function that deals with ALL the ove outcomes of the Snake
function moveOutcomes() {
//deals with snake hitting border and snake hitting self
if (
(currentSnake[0] + width >= (width * width) && direction === width ) || //if snake hits bottom
(currentSnake[0] % width === width -1 && direction === 1) || //if snake hits right wall
(currentSnake[0] % width === 0 && direction === -1) || //if snake hits left wall
(currentSnake[0] - width < 0 && direction === -width) || //if snake hits the top
squares[currentSnake[0] + direction].classList.contains('snake') //if snake goes into itself
) {
return clearInterval(interval) //this will clear the interval if any of the above happen
}
const tail = currentSnake.pop() //removes last ite of the array and shows it
squares[tail].classList.remove('snake') //removes class of snake from the TAIL
currentSnake.unshift(currentSnake[0] + direction) //gives direction to the head of the array
//deals with snake getting apple
if(squares[currentSnake[0]].classList.contains('apple')) {
squares[currentSnake[0]].classList.remove('apple')
squares[tail].classList.add('snake')
currentSnake.push(tail)
randomApple()
score++
scoreDisplay.textContent = score
clearInterval(interval)
intervalTime = intervalTime * speed
interval = setInterval(moveOutcomes, intervalTime)
}
squares[currentSnake[0]].classList.add('snake')
}
Seul on va plus vite, ensemble on va plus loin. 'KawaBunga'
le remplissage de cette condition déclenche la fin du jeu
return clearInterval(interval)
Je te suggère de renforcer cette condition afin qu'elle ne s'enclenche seulement quand currentSnake[0] + direction est positionné sur un carré contenant ton snake ET quand la direction n'est pas opposé à la direction du snake. De cette manière tu préviens que ton snake prenne une direction opposé à celle qu'il a déjà.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Seul on va plus vite, ensemble on va plus loin. 'KawaBunga'
Seul on va plus vite, ensemble on va plus loin. 'KawaBunga'
La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]