从0到1学习JavaScript编写贪吃蛇游戏


Posted in Javascript onJuly 28, 2020

本文实例为大家分享了JavaScript编写贪吃蛇游戏的具体代码,供大家参考,具体内容如下

游戏截图

从0到1学习JavaScript编写贪吃蛇游戏

1.画出游戏界面

var c=document.getElementById("myCanvas");
 var cxt=c.getContext("2d");//获取地图

2.给小蛇设置参数

var time = 160 ; //蛇的速度
 var x = y = 8; 
   var t = 20; //蛇身长
   var map = []; //记录蛇运行路径
 var size = 8; //蛇身单元大小

3.移动小蛇以及判断游戏失败条件

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 = "green";//内部填充颜色
  cxt.strokeStyle = "green";//边框颜色
  cxt.fillRect(x, y, size, size);//绘制矩形
  if((a*8)==x && (a*8)==y){ //吃食物
  rand_frog();t++;//吃到食物蛇身加长
  Score_change();
  }
 }

4.改变蛇的方向

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;//左
 }
 }

5.随机生成食物

//随机生成食物 
 function rand_frog(){
   a = Math.ceil(Math.random()*50);
   cxt.fillStyle = "red";//内部填充颜色
   cxt.strokeStyle = "red";//边框颜色
   cxt.fillRect(a*8, a*8, 8, 8);//绘制矩形
}
// 随机放置食物
rand_frog();

6.设置得分情况

//计算得分
function Score_change(){
 s=s+10;
 score.value=s; 
}

完整源代码:

从0到1学习JavaScript编写贪吃蛇游戏

更多有趣的经典小游戏实现专题,分享给大家:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery初学:find()方法及children方法的区别分析
Jan 31 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
Aug 22 Javascript
利用webqq协议使用python登录qq发消息源码参考
Apr 08 Javascript
jquery 字符串切割函数substring的用法说明
Feb 11 Javascript
简述Jquery与DOM对象
Jul 10 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
Oct 19 Javascript
ng2学习笔记之bootstrap中的component使用教程
Mar 09 Javascript
新手必须知的Node.js 4个JavaScript基本概念
Sep 16 Javascript
如何优雅地在vue中添加权限控制示例详解
Mar 07 Javascript
JS document form表单元素操作完整示例
Jan 13 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
Oct 30 Javascript
npm全局环境变量配置详解
Dec 15 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
Jul 28 #Javascript
Node.js 深度调试方法解析
Jul 28 #Javascript
vue-列表下详情的展开与折叠案例
Jul 28 #Javascript
js 数组当前行添加数据方法详解
Jul 28 #Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
Jul 28 #Javascript
JS代码简洁方式之函数方法详解
Jul 28 #Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
Jul 28 #Javascript
You might like
重置版游戏视频
2020/04/09 魔兽争霸
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
js查错流程归纳
2012/05/04 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
JavaScript工具库之Lodash详解
2019/06/15 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
使用python统计文件行数示例分享
2014/02/21 Python
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python2随机数列生成器简单实例
2017/09/04 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
python根据多个文件名批量查找文件
2019/08/13 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
财务部出纳岗位职责
2013/12/22 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
公司投资建议书
2014/05/16 职场文书
运动会表扬稿
2015/01/16 职场文书
加薪通知
2015/04/25 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers