Created
February 19, 2018 22:16
-
-
Save Demandrel/1bfaf56b85e83ec0e545e79f96328d2f to your computer and use it in GitHub Desktop.
Snake js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
body { | |
background-color: #00FFAB; | |
} | |
#container { | |
margin: auto; | |
width: 600px; | |
} | |
#myCanvas { | |
background-color: #000000; | |
border: 3px red solid; | |
} | |
#gameover { | |
position : absolute; | |
top: 200px; | |
left: 600px; | |
font-size: 25px; | |
text-align: center; | |
color: #FFFFFF; | |
display: none; | |
} | |
#score { | |
width: 600px; | |
height: 100px; | |
margin: auto; | |
background-color: grey; | |
} | |
#current, #highest { | |
font-size : 25px; | |
color: black; | |
text-align: center; | |
} | |
a { | |
text-decoration: none; | |
color : #FFFFFF; | |
} | |
span { | |
color : #FFFFFF; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title> Snake Game </title> | |
<link rel="stylesheet" href="snake.css"> | |
</head> | |
<body> | |
<div id="container"> | |
<div id="gameover"> | |
Game over! | |
<br> | |
Your score is <span id="final"></span> | |
<br> | |
<a onClick="window.location.reload()" href="#">Click To Play Again</a> | |
</div> | |
<canvas id="myCanvas" width="600" height="450"> | |
Your browser does not support the canvas feature | |
</canvas> | |
<div id="score"> | |
<div>Current Score:<span id="current">0</span> | |
</div> | |
<div>High Score:<span id="highest">3</span> | |
</div> | |
</div> | |
</div> | |
<!-- jQuery --> | |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> | |
<!-- Main JS --> | |
<script src="snake.js"></script> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$(document).ready(function() { | |
var canvas = $("#myCanvas")[0]; | |
var ctx = canvas.getContext("2d"); | |
var w = $("#myCanvas").width(); | |
var h = $("#myCanvas").height(); | |
var cw = 15; | |
var food; | |
var snake; | |
var d = "RIGHT"; | |
var gameloop = setInterval(update, 100); | |
function update() { | |
if (d == "RIGHT") | |
snake.x = snake.x + 1; | |
else if (d == "LEFT") | |
snake.x = snake.x - 1; | |
else if (d == "UP") | |
snake.y = snake.y - 1; | |
else if (d == "DOWN") | |
snake.y = snake.y + 1; | |
check_borders(); | |
check_food(); | |
blank(); | |
paint_cell(food.x, food.y, "grey"); | |
paint_cell(snake.x, snake.y, "green"); | |
} | |
function showGameOver() { | |
var current = $('#current').text(); | |
$('#final').text(current); | |
$('#gameover').fadeIn(); | |
} | |
function updateHighScore() { | |
var current = $("#current").text(); | |
var highest = $("#highest").text(); | |
if (parseInt(current) > parseInt(highest)) { | |
$('#highest').text(current) | |
} | |
} | |
function placeFood() { | |
food = { | |
x : Math.round(Math.random()*(w-cw)/cw), | |
y : Math.round(Math.random()*(h-cw)/cw) | |
} | |
} | |
function placeSnake() { | |
snake = { | |
x : Math.round(Math.random()*(w-cw)/cw), | |
y : Math.round(Math.random()*(h-cw)/cw) | |
} | |
} | |
function blank(){ | |
//Paint The Canvas | |
ctx.fillStyle = "black"; | |
ctx.fillRect(0, 0, w, h); | |
ctx.strokeStyle = "white"; | |
ctx.strokeRect(0, 0, w, h); | |
} | |
function check_borders() { | |
if (snake.x < 0 || snake.x > (w-cw)/cw || snake.y < 0 || snake.y > (h-cw)/cw) { | |
clearInterval(gameloop); | |
showGameOver(); | |
} | |
} | |
function paint_cell(x,y, color){ | |
ctx.fillStyle=color; | |
ctx.fillRect(x*cw,y*cw,cw,cw); | |
ctx.strokeStyle="white"; | |
ctx.strokeRect(x*cw,y*cw,cw,cw); | |
} | |
function check_food() { | |
if (food.x == snake.x && food.y == snake.y) { | |
var current = parseInt($('#current').text()); | |
current += 1; | |
$('#current').text(current); | |
placeFood(); | |
} | |
} | |
placeFood(); | |
paint_cell(food.x, food.y, "grey"); | |
placeSnake(); | |
paint_cell(snake.x, snake.y, "green"); | |
//Keyboard Controller | |
$(document).keydown(function(e){ | |
//39: RIGHT | |
//37: LEFT | |
//38: UP | |
//40: DOWN | |
var key = e.which; | |
if(key == "37") { | |
snake.x -= 1; | |
d = "LEFT"; | |
} | |
else if(key == "38") { | |
snake.y -= 1; | |
d = "UP"; | |
} | |
else if(key == "39") { | |
snake.x += 1; | |
d = "RIGHT"; | |
} | |
else if(key == "40") { | |
snake.y += 1; | |
d = "DOWN"; | |
} | |
check_food(); | |
blank(); | |
color = "grey"; | |
paint_cell(food.x, food.y); | |
color = "green"; | |
paint_cell(snake.x, snake.y); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment