从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做flash做的事..才完成的一个类.Auntion Action var 0.1
Feb 23 Javascript
JavaScipt基本教程之JavaScript语言的基础
Jan 16 Javascript
JavaScript中把数字转换为字符串的程序代码
Jun 19 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
Jul 02 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
Jun 24 Javascript
Angular 表单控件示例代码
Jun 26 Javascript
vue webuploader 文件上传组件开发
Sep 23 Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
Sep 26 Javascript
使用rollup打包JS的方法步骤
Dec 05 Javascript
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 Javascript
解决Vue router-link绑定事件不生效的问题
Jul 22 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
信用卡效验程序
2006/10/09 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
php文件上传类完整实例
2016/05/14 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
js制作支付倒计时页面
2016/10/21 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
vue生命周期实例小结
2018/08/15 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
Python中几个比较常见的名词解释
2015/07/04 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
python 构造三维全零数组的方法
2018/11/12 Python
Django封装交互接口代码
2020/07/12 Python
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
单位委托书怎么写
2014/08/02 职场文书
盗窃案辩护词
2015/05/21 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js