Skip to content

Commit 3203a5a

Browse files
Merge pull request Nivedita-coder#41 from prakashait9/snake
Add Classic Snake Game
2 parents d07dcb9 + 631543f commit 3203a5a

1 file changed

Lines changed: 125 additions & 0 deletions

File tree

‎Snake_Game/ClassicSnakeGame.html‎

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8" />
6+
<title>Classic Snake Game</title>
7+
<style type="text/css">
8+
body {
9+
text-align: center;
10+
}
11+
12+
canvas {
13+
border: 7px solid #4A4747
14+
}
15+
</style>
16+
<script type="text/javascript">
17+
function play_game() {
18+
var game_level = 150;
19+
var rect_w = 45;
20+
var rect_h = 30;
21+
var snake_color = "#0520A5";
22+
var tn = []; // temporary directions storage
23+
var x_dir = [-1, 0, 1, 0];
24+
var y_dir = [0, -1, 0, 1];
25+
var queue = [];
26+
var frog = 1;
27+
var map = [];
28+
var X = 5 + (Math.random() * (rect_w - 10)) | 0;
29+
var Y = 5 + (Math.random() * (rect_h - 10)) | 0;
30+
var direction = Math.random() * 3 | 0;
31+
var interval = 0;
32+
var score = 0;
33+
var sum = 0, easy = 0;
34+
var i, dir;
35+
36+
var c = document.getElementById('playArea');
37+
var ctx = c.getContext('2d');
38+
39+
for (i = 0; i < rect_w; i++) {
40+
map[i] = [];
41+
}
42+
43+
function set_game_speed() {
44+
if (easy) {
45+
X = (X + rect_w) % rect_w;
46+
Y = (Y + rect_h) % rect_h;
47+
}
48+
if (tn.length) {
49+
dir = tn.pop();
50+
if ((dir % 2) !== (direction % 2)) {
51+
direction = dir;
52+
}
53+
}
54+
if ((easy || (0 <= X && 0 <= Y && X < rect_w && Y < rect_h)) && 2 !== map[X][Y]) {
55+
if (1 === map[X][Y]) {
56+
score++;
57+
random_snake_position();
58+
frog++;
59+
}
60+
ctx.fillRect(X * 10, Y * 10, 9, 9);
61+
map[X][Y] = 2;
62+
queue.unshift([X, Y]);
63+
X += x_dir[direction];
64+
Y += y_dir[direction];
65+
if (frog < queue.length) {
66+
dir = queue.pop()
67+
map[dir[0]][dir[1]] = 0;
68+
ctx.clearRect(dir[0] * 10, dir[1] * 10, 10, 10);
69+
}
70+
}
71+
else if (!tn.length) {
72+
var show_score = document.getElementById("show");
73+
show_score.innerHTML = "Your Score: <b>" + score + "</b><br/><br/> <input type='button' value='Play Again' onclick='window.location.reload();' />";
74+
document.getElementById("playArea").style.display = 'none';
75+
window.clearInterval(interval);
76+
}
77+
}
78+
79+
function random_snake_position() {
80+
var x, y;
81+
do {
82+
x = Math.random() * rect_w | 0;
83+
y = Math.random() * rect_h | 0;
84+
}
85+
while (map[x][y]);
86+
map[x][y] = 1;
87+
ctx.fillStyle = snake_color;
88+
ctx.strokeRect(x * 10 + 1, y * 10 + 1, 8, 8);
89+
}
90+
91+
random_snake_position();
92+
interval = window.setInterval(set_game_speed, game_level);
93+
94+
document.onkeydown = function (e) {
95+
var code = e.keyCode - 37;
96+
if (0 <= code && code < 4 && code !== tn[0]) {
97+
tn.unshift(code);
98+
}
99+
else if (-5 == code) {
100+
if (interval) {
101+
window.clearInterval(interval);
102+
interval = 0;
103+
}
104+
else {
105+
interval = window.setInterval(set_game_speed, 60);
106+
}
107+
}
108+
else {
109+
dir = sum + code;
110+
if (dir == 44 || dir == 94 || dir == 126 || dir == 171) {
111+
sum += code
112+
} else if (dir === 218) easy = 1;
113+
}
114+
}
115+
}
116+
</script>
117+
</head>
118+
119+
<body onload="play_game()">
120+
<h1>Classic Snake Game</h1>
121+
<div id="show"></div>
122+
<canvas id="playArea" width="450" height="300">Looks like we found a time traveller! You need to upgrade to modern browser to enjoy this game.</canvas>
123+
</body>
124+
125+
</html>

0 commit comments

Comments
 (0)