html5&javascript贪吃蛇游戏

[代码] [JavaScript]代码

001 <!documentTYPE html>
002 <html lang="en">
003 <head>
004 <meta charset="utf-8" />
005 <title>Play Snake Game</title>
006 <style type="text/css">
007 body {text-align:center;}
008 canvas { border:5px dotted #ccc; }
009 h1 { font-size:50px; text-align: center; margin: 0; padding-bottom: 25px;}
010 </style>
011 <script type="text/javascript">
012 function play_game()
013 {
014 var level = 160; // Game level, by decreasing will speed up
015 var rect_w = 45; // Width
016 var rect_h = 30; // Height
017 var inc_score = 50; // Score
018 var snake_color = "#006699"// Snake Color
019 var ctx; // Canvas attributes
020 var tn = []; // temp directions storage
021 var x_dir = [-1, 0, 1, 0]; // position adjusments
022 var y_dir = [0, -1, 0, 1]; // position adjusments
023 var queue = [];
024 var frog = 1; // defalut food
025 var map = [];
026 var MR = Math.random;
027 var X = 5 + (MR() * (rect_w - 10))|0; // Calculate positions
028 var Y = 5 + (MR() * (rect_h - 10))|0; // Calculate positions
029 var direction = MR() * 3 | 0;
030 var interval = 0;
031 var score = 0;
032 var sum = 0, easy = 0;
033 var i, dir;
034 // getting play area
035 var c = document.getElementById('playArea');
036 ctx = c.getContext('2d');
037 // Map positions
038 for (i = 0; i < rect_w; i++)
039 {
040 map[i] = [];
041 }
042 // random placement of snake food
043 function rand_frog()
044 {
045 var x, y;
046 do
047 {
048 x = MR() * rect_w|0;
049 y = MR() * rect_h|0;
050 }
051 while (map[x][y]);
052 map[x][y] = 1;
053 ctx.fillStyle = snake_color;
054 ctx.strokeRect(x * 10+1, y * 10+1, 8, 8);
055 }
056 // Default somewhere placement
057 rand_frog();
058 function set_game_speed()
059 {
060 if (easy)
061 {
062 X = (X+rect_w)%rect_w;
063 Y = (Y+rect_h)%rect_h;
064 }
065 --inc_score;
066 if (tn.length)
067 {
068 dir = tn.pop();
069 if ((dir % 2) !== (direction % 2))
070 {
071 direction = dir;
072 }
073 }
074 if ((easy || (0 <= X && 0 <= Y && X < rect_w && Y < rect_h)) && 2 !== map[X][Y])
075 {
076 if (1 === map[X][Y])
077 {
078 score+= Math.max(5, inc_score);
079 inc_score = 50;
080 rand_frog();
081 frog++;
082 }
083 //ctx.fillStyle("#ffffff");
084 ctx.fillRect(X * 10, Y * 10, 9, 9);
085 map[X][Y] = 2;
086 queue.unshift([X, Y]);
087 X+= x_dir[direction];
088 Y+= y_dir[direction];
089 if (frog < queue.length)
090 {
091 dir = queue.pop()
092 map[dir[0]][dir[1]] = 0;
093 ctx.clearRect(dir[0] * 10, dir[1] * 10, 10, 10);
094 }
095 }
096 else if (!tn.length)
097 {
098 var msg_score = document.getElementById("msg");
099 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();' />";
100 document.getElementById("playArea").style.display = 'none';
101 window.clearInterval(interval);
102 }
103 }
104 interval = window.setInterval(set_game_speed, level);
105 document.onkeydown = function(e) {
106 var code = e.keyCode - 37;
107 if (0 <= code && code < 4 && code !== tn[0])
108 {
109 tn.unshift(code);
110 }
111 else if (-5 == code)
112 {
113 if (interval)
114 {
115 window.clearInterval(interval);
116 interval = 0;
117 }
118 else
119 {
120 interval = window.setInterval(set_game_speed, 60);
121 }
122 }
123 else
124 {
125 dir = sum + code;
126 if (dir == 44||dir==94||dir==126||dir==171) {
127 sum+= code
128 else if (dir === 218) easy = 1;
129 }
130 }
131 }
132 </script>
133 </head>
134 <body onload="play_game()">
135 <h1>Play Snake Game</h1>
136 <div id="msg"></div>
137 <canvas id="playArea" width="450" height="300">Sorry your browser does not support HTML5</canvas>
138 </body>
139 </html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值