从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操作xml
Nov 04 Javascript
jQuery的Ajax时无响应数据的解决方法
May 25 Javascript
js中switch case循环实例代码
Dec 30 Javascript
Ionic如何实现下拉刷新与上拉加载功能
Jun 03 Javascript
Angularjs分页查询的实现
Feb 24 Javascript
Angular2关于@angular/cli默认端口号配置的问题
Jul 15 Javascript
在vue中使用v-bind:class的选项卡方法
Sep 27 Javascript
vue车牌号校验和银行校验实战
Jan 23 Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 Javascript
详解JavaScript中new操作符的解析和实现
Sep 04 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
Nov 10 Javascript
JavaScript前端面试组合函数
Jun 21 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删除文件夹的三种方法
2013/06/09 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
解析isset与is_null的区别
2013/08/09 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
javascript利用apply和arguments复用方法
2013/11/25 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
原生JavaScript实现购物车
2021/01/10 Javascript
简单介绍Python中的len()函数的使用
2015/04/07 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python中模块与包有相同名字的处理方法
2017/05/05 Python
快速入门python学习笔记
2017/12/06 Python
python和flask中返回JSON数据的方法
2018/03/26 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
pandas 空数据处理方法详解
2019/11/02 Python
Python求凸包及多边形面积教程
2020/04/12 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
浅谈Python中的字符串
2020/06/10 Python
房屋继承公证书
2014/04/10 职场文书
大学新闻系自荐书
2014/05/31 职场文书
创业计划书之美容店
2019/09/16 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android