从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 相关文章推荐
Js中sort()方法的用法
Nov 04 Javascript
escape、encodeURI 和 encodeURIComponent 的区别
Mar 02 Javascript
有关DOM元素与事件的3个谜题
Nov 11 Javascript
jquery设置控件位置的方法
Aug 21 Javascript
js open() 与showModalDialog()方法使用介绍
Sep 10 Javascript
javascript中怎么做对象的类型判断
Nov 11 Javascript
jQuery判断对象是否存在的方法
Feb 05 Javascript
Node.js中文件操作模块File System的详细介绍
Jan 05 Javascript
小程序Request的另类用法详解
Aug 09 Javascript
vue3修改link标签默认icon无效问题详解
Oct 09 Javascript
Swiper实现导航栏滚动效果
Oct 16 Javascript
微信小程序实现拍照和相册选取图片
May 09 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
SMARTY学习手记
2007/01/04 PHP
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
php skymvc 一款轻量、简单的php
2011/06/28 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
用python删除java文件头上版权信息的方法
2014/07/31 Python
python遍历类中所有成员的方法
2015/03/18 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
python 调用Google翻译接口的方法
2020/12/09 Python
如何利用python 读取配置文件
2021/01/06 Python
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
工商学院毕业生个人自我评价
2013/09/19 职场文书
大学生个人总结的自我评价
2013/10/05 职场文书
暑期社会实践方案
2014/02/05 职场文书
《太阳》教学反思
2014/02/21 职场文书
警察群众路线整改措施
2014/09/26 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
调研报告的主要写法
2019/04/18 职场文书