从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中的Screen屏幕对象
Jan 16 Javascript
JS事件在IE与FF中的区别详细解析
Nov 20 Javascript
js实现商城星星评分的效果
Dec 29 Javascript
JQuery.validate在ie8下不支持的快速解决方法
May 18 Javascript
原生和jQuery的ajax用法详解
Jan 23 Javascript
vue实现todolist单页面应用
Apr 11 Javascript
Vue.js学习教程之列表渲染详解
May 17 Javascript
详解Angular CLI + Electron 开发环境搭建
Jul 20 Javascript
详解js静态资源文件请求的处理
Aug 01 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
Jan 08 Javascript
vuex如何重置所有state(可定制)
Jan 17 Javascript
element多个表单校验的实现
May 27 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/07/01 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
JavaScript的public、private和privileged模式
2009/12/28 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
python入门前的第一课 python怎样入门
2018/03/06 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
员工趣味活动方案
2014/08/27 职场文书
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android