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制作精致的照片墙特效
Jun 07 HTML / CSS
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
Jun 06 HTML / CSS
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
Apr 26 HTML / CSS
css3实现元素环绕中心点布局的方法示例
Jan 15 HTML / CSS
解决margin 外边距合并问题
Jul 03 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
Jun 01 HTML / CSS
HTML5 本地存储 LocalStorage详解
Jun 24 HTML / CSS
Html5 语法与规则简要概述
Jul 29 HTML / CSS
浅谈HTML5 &amp; CSS3的新交互特性
Jul 19 HTML / CSS
使用phonegap创建联系人的实现方法
Mar 30 HTML / CSS
详解Canvas 跨域脱坑实践
Nov 07 HTML / CSS
CSS中妙用 drop-shadow 实现线条光影效果
Nov 11 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php中处理模拟rewrite 效果
2006/12/09 PHP
php zend 相对路径问题
2009/01/12 PHP
php whois查询API制作方法
2011/06/23 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
javascript第一课
2007/02/27 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
Python实现程序的单一实例用法分析
2015/06/03 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
Python3实现的反转单链表算法示例
2019/03/08 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
python中str内置函数用法总结
2020/12/27 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
出售房屋委托书范本
2014/09/24 职场文书
走群众路线学习笔记
2014/11/06 职场文书
党员倡议书
2015/01/19 职场文书
倡议书范文大全
2015/04/28 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python
Python如何让字典保持有序排列
2022/04/29 Python
MySQL查询日期时间
2022/05/15 MySQL
python数字图像处理:图像的绘制
2022/06/28 Python
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers