从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 相关文章推荐
javascript 年月日联动实现核心代码
Dec 21 Javascript
jquery $.ajax()取xml数据的小问题解决方法
Nov 20 Javascript
JS 按钮点击触发(兼容IE、火狐)
Aug 07 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
Mar 03 Javascript
原生js实现轮播图
Feb 27 Javascript
H5上传本地图片并预览功能
May 08 Javascript
解析Vue2 dist 目录下各个文件的区别
Nov 22 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
Sep 12 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
Sep 15 Javascript
100行代码实现一个vue分页组功能
Nov 06 Javascript
详解react-refetch的使用小例子
Feb 15 Javascript
js 实现ajax发送步骤过程详解
Jul 25 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
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
神经网络python源码分享
2017/12/15 Python
python中set()函数简介及实例解析
2018/01/09 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
餐饮管理自我介绍信
2014/01/15 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
民事申诉状范本
2015/05/20 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
MySQL笔记 —SQL运算符
2022/01/18 MySQL
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers