scrimba
Build a Snake game in JavaScript
Using Modulus in our game
Go Pro!Bootcamp

Bootcamp

Study group

Collaborate with peers in your dedicated #study-group channel.

Code reviews

Submit projects for review using the /review command in your #code-reviews channel

To see this lesson you need to be logged in. Joining Scrimba is free and gives you access to 20+ courses.Sign up
Using Modulus in our game
AboutCommentsNotes
Using Modulus in our game
Expand for more info
index.js
run
preview
console
const grid = document.querySelector('.grid')
const startButton = document.getElementById('start')
const score = document.getElementById('score')
let squares = []
let currentSnake = [2,1,0]
let direction = 1
let width = 10

function createGrid() {
//create 100 of these elements with a for loop
for (let i=0; i < 100; i++) {
//create element
const square = document.createElement('div')
//add styling to the element
square.classList.add('square')
//put the element into our grid
grid.appendChild(square)
//push it into a new squares array
squares.push(square)
}
}
createGrid()

currentSnake.forEach(index => squares[index].classList.add('snake'))

function move() {
//remove last element from our currentSnake array
const tail = currentSnake.pop()
//remove styling from last element
squares[tail].classList.remove('snake')
//add square in direction we are heading
currentSnake.unshift(currentSnake[0] + direction)
//add styling so we can see it
squares[currentSnake[0]].classList.add('snake')
}
move()

let timerId = setInterval(move, 1000)


// 39 is right arrow
// 38 is for the up arrow
// 37 is for the left arrow
// 40 is for the down arrow

function control(e) {
if (e.keyCode === 39) {
console.log('right pressed')
direction = 1
} else if (e.keyCode === 38) {
console.log('up pressed')
direction = -width
} else if (e.keyCode === 37) {
console.log('left pressed')
direction = -1
} else if (e.keyCode === 40) {
console.log('down pressed')
direction = +width
}
}
document.addEventListener('keyup', control)
Console
"down pressed"
,
"down pressed"
,
"right pressed"
,
"up pressed"
,
"left pressed"
,
"down pressed"
,
/index.html
-6:00