从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与google map api结合使用 控件,监听器
Mar 04 Javascript
客户端 使用XML DOM加载json数据的方法
Sep 28 Javascript
Javascript图像处理—平滑处理实现原理
Dec 28 Javascript
引用外部脚本时script标签关闭的写法
Jan 20 Javascript
jquery列表拖动排列(由项目提取相当好用)
Jun 17 Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
Mar 11 Javascript
JQuery解析XML的方法小结
Apr 02 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
Jul 31 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
Jun 05 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实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
帝国cms目录结构分享
2015/07/06 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
Python yield 使用浅析
2015/05/28 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
python 计算文件的md5值实例
2017/01/13 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
python调用API实现智能回复机器人
2018/04/10 Python
用python实现刷点击率的示例代码
2019/02/21 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
Python获取时间戳代码实例
2019/09/24 Python
2014年圣诞节促销方案
2014/03/14 职场文书
亚运会口号
2014/06/20 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
暑期社会实践证明书
2014/11/17 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
Spring Boot 实现 WebSocket
2022/04/30 Java/Android
Python 中面向接口编程
2022/05/20 Python