Workshop › Snake › Step 21 of 28

Crash into yourself

What we are doing

Running into your own body ends the game too. The tail is left out of the check, because it moves away this turn.

```js
const hitSelf = snake.slice(0, -1).some((part) => part.x === head.x && part.y === head.y)
if (hitWall || hitSelf) {
```

What it means

Your turn

Under hitWall write hitSelf, and change if (hitWall) to if (hitWall || hitSelf).

Skills: Collision detection, Arrays and objects

All steps

  1. Find the canvas
  2. Get the pen
  3. Paint the board
  4. Think in cells
  5. Keep the position in a variable
  6. A function that draws
  7. A function that moves
  8. The game loop
  9. Slow it down
  10. A direction to move in
  11. Steer with the arrow keys
  12. A body made of a list
  13. Move the whole body
  14. Pick a spot for the food
  15. Draw the food
  16. Eat and grow
  17. Never put food on the snake
  18. A table of turns
  19. No U-turns
  20. Crash into the walls
  21. Crash into yourself
  22. The game over message
  23. Show the score
  24. One function that starts a game
  25. Play again with Space
  26. Remember the best score
  27. Speed up as you grow
  28. Build it yourself: through the walls