从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 构造函数 面相对象学习必备知识
Jun 09 Javascript
JS target与currentTarget区别说明
Aug 28 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
Mar 20 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
Feb 13 Javascript
requirejs + vue 项目搭建详解
Jun 16 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 Javascript
vue单个组件实现无限层级多选菜单功能
Apr 10 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
Jul 24 Javascript
在vue项目中引入vue-beauty操作方法
Feb 11 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
Mar 02 Javascript
JavaScript中的各种宽高属性的实现
May 08 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简介
2006/10/09 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
php图像验证码生成代码
2017/06/08 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
nginx 设置多个站跨域
2021/03/09 Servers
Javascript select下拉框操作常用方法
2009/11/09 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
Python中常见的数据类型小结
2015/08/29 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
详解Python用户登录接口的方法
2019/04/17 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
什么是封装
2013/03/26 面试题
关于奉献的演讲稿
2014/05/21 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
投标承诺函格式
2015/01/21 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书