Rabu, 15 Februari 2012

Membuat Snake Game Dengan HTML5



Halaman 404 ato maintenance adalah suatu masa dimana kita harus menyiapkan page khusus untuk itu, nah begitu pun saya, dan kemaren kemaren saya coba belajar tentang canvas yang notabenya adalah tag baru yang di muncukan pada html5, nah sekarang sialakan di nikmati hasil nya 
Source :
<!documentTYPE html>
<html lang=”en”>
<head>
<meta charset=”utf-8″ />
<title>Play Snake Game</title>
<style type=”text/css”>
body {text-align:center;}
canvas { border:5px dotted #ccc; }
h1 { font-size:50px; text-align: center; margin: 0; padding-bottom: 25px;}
</style>
<script type=”text/javascript”>
function play_game()
{
var level = 160; // Game level, by decreasing will speed up
var rect_w = 45; // Width
var rect_h = 30; // Height
var inc_score = 50; // Score
var snake_color = “#006699″; // Snake Color
var ctx; // Canvas attributes
var tn = []; // temp directions storage
var x_dir = [-1, 0, 1, 0]; // position adjusments
var y_dir = [0, -1, 0, 1]; // position adjusments
var queue = [];
var frog = 1; // defalut food
var map = [];
var MR = Math.random;
var X = 5 + (MR() * (rect_w – 10))|0; // Calculate positions
var Y = 5 + (MR() * (rect_h – 10))|0; // Calculate positions
var direction = MR() * 3 | 0;
var interval = 0;
var score = 0;
var sum = 0, easy = 0;
var i, dir;
// getting play area
var c = document.getElementById(‘playArea’);
ctx = c.getContext(’2d’);
// Map positions
for (i = 0; i < rect_w; i++)
{
map[i] = [];
}
// random placement of snake food
function rand_frog()
{
var x, y;
do
{
x = MR() * rect_w|0;
y = MR() * rect_h|0;
}
while (map[x][y]);
map[x][y] = 1;
ctx.fillStyle = snake_color;
ctx.strokeRect(x * 10+1, y * 10+1, 8, 8);
}
// Default somewhere placement
rand_frog();
function set_game_speed()
{
if (easy)
{
X = (X+rect_w)%rect_w;
Y = (Y+rect_h)%rect_h;
}
–inc_score;
if (tn.length)
{
dir = tn.pop();
if ((dir % 2) !== (direction % 2))
{
direction = dir;
}
}
if ((easy || (0 <= X && 0 <= Y && X < rect_w && Y < rect_h)) && 2 !== map[X][Y])
{
if (1 === map[X][Y])
{
score+= Math.max(5, inc_score);
inc_score = 50;
rand_frog();
frog++;
}
//ctx.fillStyle(“#ffffff”);
ctx.fillRect(X * 10, Y * 10, 9, 9);
map[X][Y] = 2;
queue.unshift([X, Y]);
X+= x_dir[direction];
Y+= y_dir[direction];
if (frog < queue.length)
{
dir = queue.pop()
map[dir[0]][dir[1]] = 0;
ctx.clearRect(dir[0] * 10, dir[1] * 10, 10, 10);
}
}
else if (!tn.length)
{
var msg_score = document.getElementById(“msg”);
msg_score.innerHTML = “Thank you for playing game.<br /> Your Score : <b>”+score+”</b><br /><br /><input type=’button’ value=’Play Again’ onclick=’window.location.reload();’ />”;
document.getElementById(“playArea”).style.display = ‘none’;
window.clearInterval(interval);
}
}
interval = window.setInterval(set_game_speed, level);
document.onkeydown = function(e) {
var code = e.keyCode – 37;
if (0 <= code && code < 4 && code !== tn[0])
{
tn.unshift(code);
}
else if (-5 == code)
{
if (interval)
{
window.clearInterval(interval);
interval = 0;
}
else
{
interval = window.setInterval(set_game_speed, 60);
}
}
else
{
dir = sum + code;
if (dir == 44||dir==94||dir==126||dir==171) {
sum+= code
} else if (dir === 218) easy = 1;
}
}
}
</script>
</head>
<body onload=”play_game()”>
<h1>Play Snake Game</h1>
<div id=”msg”></div>
<canvas id=”playArea” width=”450″ height=”300″>Sorry your browser does not support HTML5</canvas>
</body>
</html>
Keep learning :)
Silakan di kembangkan :)
Demo : http://anggamovic.co.tv/demo/snake.php

0 komentar:

Posting Komentar

Related Posts Plugin for WordPress, Blogger...