Snake Game Using HTML , CSS And JavaScript With Source Code
Introduction :
Today we have made a wonderful snake game which is very amazing. To make this game we have used HTML CSS and JavaScript. Also the interesting thing is that this game is completely responsive which you can play on mobile, laptop and tablet. Can play different types of Davis and have fun
We have made this game very well, like we have added sound effects in this game, if a user gets out while playing, then he will hear the sound of out, you can see in this code below 👇👇
const foodSound = new Audio(‘music/food.mp3’);
const gameOverSound = new Audio(‘music/gameover.mp3’);
const moveSound = new Audio(‘music/move.mp3’);
const musicSound = new Audio(‘music/music.mp3’);
Also, friends, we have also added a score box in this game in which the user can check the score of his game.
let speed = 9;
let score = 0;
let lastPaintTime = 0;
let snakeArr = [
{x: 13, y: 15}
,
Friends, you will get the source code of this entire game below, but you will have to keep some things in mind, otherwise you may face problems in the code. 👇👇
Snake Game Step By Step Guide:-
Let’s start, first of all create a folder in your computer with the name of Snake Game, then open that folder in your vs code, then in this folder you will have to create three files in which the first will be the index.html file which will be the game. Will design the structure, then style.css and then the final file will be script.js which will work in playing the game.
We have used some sound effects in this game like if a user gets out in the game then he will hear out type sound in which the game is very good and it is a lot of fun to play the game.
In this game, we have used the keyboard arrows to control the snake, like if you want to move the snake up, you can use the keyboard up arrow, in this way you can control the snake by using the remaining arrows. Is
HTML (index.html)
SnakeMania - Developergtm
Score: 0
HiScore: 0
CSS (Style.css)
@import url('https://fonts.googleapis.com/css2?family=New+Tegomin&display=swap');
* {
padding: 0;
margin: 0;
}
body {
background-image: linear-gradient(45deg, #3e618f, #29a594);
}
.body {
min-height: 100vh;
background-size: 100vw 100vh;
background-repeat: no-repeat;
display: flex;
justify-content: center;
align-items: center;
}
#scoreBox {
position: absolute;
top: 9px;
right: 200px;
font-size: 39px;
font-weight: bold;
font-family: 'New Tegomin', serif;
padding: 9px;
color: red;
background-color: black;
}
#hiscoreBox {
position: absolute;
top: 93px;
right: 156px;
font-size: 39px;
font-weight: bold;
font-family: 'New Tegomin', serif;
padding: 9px;
color: red;
background-color: black;
}
#board {
background-image: linear-gradient(45deg, #3e618f, #29a594);
width: 90vmin;
height: 92vmin;
border: 2px solid black;
display: grid;
grid-template-rows: repeat(18, 1fr);
grid-template-columns: repeat(18, 1fr);
}
.head {
background: red;
border: 2px solid rgb(34, 4, 34);
transform: scale(1.02);
border-radius: 50%;
}
.snake {
background-color: purple;
border: .25vmin solid white;
border-radius: 12px;
}
.food {
background: yellow;
border: .25vmin solid black;
border-radius: 8px;
}
Javascript (Script.js)
// Game Constants & Variables
let inputDir = {x: 0, y: 0};
const foodSound = new Audio('music/food.mp3');
const gameOverSound = new Audio('music/gameover.mp3');
const moveSound = new Audio('music/move.mp3');
const musicSound = new Audio('music/music.mp3');
let speed = 9;
let score = 0;
let lastPaintTime = 0;
let snakeArr = [
{x: 13, y: 15}
];
food = {x: 6, y: 7};
// Game Functions
function main(ctime) {
window.requestAnimationFrame(main);
// console.log(ctime)
if((ctime - lastPaintTime)/1000 < 1/speed){
return;
}
lastPaintTime = ctime;
gameEngine();
}
function isCollide(snake) {
// If you bump into yourself
for (let i = 1; i = 18 || snake[0].x = 18 || snake[0].y hiscoreval){
hiscoreval = score;
localStorage.setItem("hiscore", JSON.stringify(hiscoreval));
hiscoreBox.innerHTML = "HiScore: " + hiscoreval;
}
scoreBox.innerHTML = "Score: " + score;
snakeArr.unshift({x: snakeArr[0].x + inputDir.x, y: snakeArr[0].y + inputDir.y});
let a = 2;
let b = 16;
food = {x: Math.round(a + (b-a)* Math.random()), y: Math.round(a + (b-a)* Math.random())}
}
// Moving the snake
for (let i = snakeArr.length - 2; i>=0; i--) {
snakeArr[i+1] = {...snakeArr[i]};
}
snakeArr[0].x += inputDir.x;
snakeArr[0].y += inputDir.y;
// Part 2: Display the snake and Food
// Display the snake
board.innerHTML = "";
snakeArr.forEach((e, index)=>{
snakeElement = document.createElement('div');
snakeElement.style.gridRowStart = e.y;
snakeElement.style.gridColumnStart = e.x;
if(index === 0){
snakeElement.classList.add('head');
}
else{
snakeElement.classList.add('snake');
}
board.appendChild(snakeElement);
});
// Display the food
foodElement = document.createElement('div');
foodElement.style.gridRowStart = food.y;
foodElement.style.gridColumnStart = food.x;
foodElement.classList.add('food')
board.appendChild(foodElement);
}
// Main logic starts here
musicSound.play();
let hiscore = localStorage.getItem("hiscore");
if(hiscore === null){
hiscoreval = 0;
localStorage.setItem("hiscore", JSON.stringify(hiscoreval))
}
else{
hiscoreval = JSON.parse(hiscore);
hiscoreBox.innerHTML = "HiScore: " + hiscore;
}
window.requestAnimationFrame(main);
window.addEventListener('keydown', e =>{
inputDir = {x: 0, y: 1} // Start the game
moveSound.play();
switch (e.key) {
case "ArrowUp":
console.log("ArrowUp");
inputDir.x = 0;
inputDir.y = -1;
break;
case "ArrowDown":
console.log("ArrowDown");
inputDir.x = 0;
inputDir.y = 1;
break;
case "ArrowLeft":
console.log("ArrowLeft");
inputDir.x = -1;
inputDir.y = 0;
break;
case "ArrowRight":
console.log("ArrowRight");
inputDir.x = 1;
inputDir.y = 0;
break;
default:
break;
}
});
50 Python Pattern Programs – CodeWithCurious 50 Python Pattern Programs Here are 50 different Python programs to print patterns. Each pattern includes …
How to Build a Web Scraper With Python: Step-by-Step Tutorial Mastering web scraping allows you access to static or real-time data for …
Bank Management System Using Python Django Introduction The Bank Management System V2.0.2 is a feature-rich online banking solution built using the Python …
Pharmacy Management System Using Python Django Introduction The Pharmacy Dispensing Management System is a robust and user-friendly software solution developed using Python …