html5贪吃蛇游戏使用63行代码完美实现


Posted in HTML / CSS onJune 25, 2013

以前也很少关注html5,感觉选择html已经慢慢成为趋势,想了解下。就找了个游戏学习了,写完这个游戏感觉html5和js结合很紧密,如果js不是特别好。估计需要先补习下js,这个只是个人的建议,不一定准确。还有一个就是,思维和逻辑要特别清楚,不然写游戏可能很痛苦。

贪吃蛇,最主要的功能点: 1,蛇的移动 2,改变蛇的方向 3,放置食物 4,增加舍身 5,怎么挂的。

第一次写游戏,第一次写html5 感觉还是很吃力的。写完了,给大家分享下。互相交流.............不懂的或者有建议的,可以留言给我。。。代码很短,就60行。

不过这个是个半成品,等写完成了。再更新下

复制代码
代码如下:

<!DOCTYPE HTML>
<html>
<body>
<canvas id="myCanvas" width="400" height="400" style="border:1px solid #c3c3c3;"></canvas>
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var time = 160 ; //蛇的速度
var cxt=c.getContext("2d");
var x = y = 8;
var a = 0; //食物坐标
var t = 20; //舍身长
var map = []; //记录蛇运行路径
var size = 8; //蛇身单元大小
var direction = 2; // 1 向上 2 向右 0 左 3下
interval = window.setInterval(set_game_speed, time); // 移动蛇
function set_game_speed(){ // 移动蛇
switch(direction){
case 1:y = y-size;break;
case 2:x = x+size;break;
case 0:x = x-size;break;
case 3:y = y+size;break;
}
if(x>400 || y>400 || x<0 || y<0){
alert("你挂了,继续努力吧!失败原因:碰壁了.....");window.location.reload();
}
for(var i=0;i<map.length;i++){
if( parseInt(map[i].x)==x && parseInt(map[i].y)==y){
alert("你挂了,继续努力吧!失败原因:撞到自己了.....");window.location.reload();
}
}
if (map.length>t) { //保持舍身长度
var cl = map.shift(); //删除数组第一项,并且返回原元素
cxt.clearRect(cl['x'], cl['y'], size, size);
};
map.push({'x':x,'y':y}); //将数据添加到原数组尾部
cxt.fillStyle = "#006699";//内部填充颜色
cxt.strokeStyle = "#006699";//边框颜色
cxt.fillRect(x, y, size, size);//绘制矩形
if((a*8)==x && (a*8)==y){ //吃食物
rand_frog();t++;
}
}
document.onkeydown = function(e) { //改变蛇方向
var code = e.keyCode - 37;
switch(code){
case 1 : direction = 1;break;//上
case 2 : direction = 2;break;//右
case 3 : direction = 3;break;//下
case 0 : direction = 0;break;//左
}
}
// 随机放置食物
function rand_frog(){
a = Math.ceil(Math.random()*50);
cxt.fillStyle = "#000000";//内部填充颜色
cxt.strokeStyle = "#000000";//边框颜色
cxt.fillRect(a*8, a*8, 8, 8);//绘制矩形
}
// 随机放置食物
rand_frog();
</script>
</body>
</html>
HTML / CSS 相关文章推荐
css3新增颜色表示方式分享
Apr 15 HTML / CSS
CSS3区域模块region相关编写示例
Aug 28 HTML / CSS
详解CSS3选择器的使用方法汇总
Nov 24 HTML / CSS
详解Sticky Footer 绝对底部的两种套路
Nov 03 HTML / CSS
css3媒体查询中device-width和width的区别详解
Mar 27 HTML / CSS
HTML5 Canvas API中drawImage()方法的使用实例
Mar 25 HTML / CSS
html5 canvas 使用示例
Oct 22 HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
Jun 20 HTML / CSS
用HTML5的canvas实现一个炫酷时钟效果
May 20 HTML / CSS
详解三种方式实现平滑滚动页面到顶部的功能
Apr 23 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
Aug 20 HTML / CSS
简单实现一个手持弹幕功能+文字抖动特效
Mar 31 HTML / CSS
html5如何及时更新缓存文件(js、css或图片)
Jun 24 #HTML / CSS
html5 offlline 缓存使用示例
Jun 24 #HTML / CSS
html5 worker 实例(二) 图片变换效果
Jun 24 #HTML / CSS
html5 worker 实例(一) 为什么测试不到效果
Jun 24 #HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
Jun 20 #HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
Jun 20 #HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
Jun 09 #HTML / CSS
You might like
一些花式咖啡的配方
2021/03/03 冲泡冲煮
学习php笔记 字符串处理
2010/10/19 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
PHP header函数分析详解
2011/08/06 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
angularjs的一些优化小技巧
2014/12/06 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python try except 捕获所有异常的实例
2018/10/18 Python
Python实现京东秒杀功能代码
2019/05/16 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
通过cmd进入python的步骤
2020/06/16 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
排球赛新闻稿
2015/07/17 职场文书