贪食蛇:得分计算/蛇长计算/游戏加速/蛇加长

贪食蛇:得分计算/蛇长计算/游戏加速/蛇加长

2021-03-13
¥ 0 终身VIP免费 升级终身VIP
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 网站建设 模板修改 源码安装 LOGO设计 图片设计
贪食蛇:得分计算/蛇长计算/游戏加速/蛇加长
最近更新 2021年03月13日
资源编号 15041

贪食蛇:得分计算/蛇长计算/游戏加速/蛇加长

郑重承诺丨总裁主题提供安全交易、信息保真!
增值服务:
安装指导
环境配置
二次开发
网站建设
模板修改
源码安装
¥ 0 (终身VIP免费 升级终身VIP开通VIP尊享优惠特权
立即下载 升级会员 最新活动
详情介绍

算是目前为止,最接近贪食蛇的一款小demo了吧,增加了积分部分:

主要功能:

得分计算/蛇长计算/游戏加速/蛇加长 (吃到食物, 蛇加长, 移动速度加快, 游戏结束计算得分/蛇长)

贪食蛇:得分计算/蛇长计算/游戏加速/蛇加长

  1. <canvas style=”width: 100%; height: 100%; background-color: #ccc” canvas-id=”snakeCanvas” class=”snake-canvas-C” bindtouchstart=”touchStart” bindtouchmove=”touchMove”></canvas>

创建画布标签 配置一些样式 绑定了两个事件 —bindtouchstart=”touchStart” bindtouchmove=”touchMove” 在snakeGame.js 对这两个事件(touchStart手指触摸屏幕/touchMove手指在手机上移动)进行处理

下面着重解释snakeGame.js文件内容
主要是调用此函数 requestAnimationFrame(function xx) // 循环执行动画绘制
  1. // 核心代码为
  2. function beginDraw (){
  3.     //  ……..逻辑操作代码
  4.     // 调用 wx.drawCanvas,通过 canvasId 指定在哪张画布上绘制,通过 actions 指定绘制行为
  5.     wx.drawCanvas({
  6.          canvasId: ‘snakeCanvas’,
  7.          actions: context.getActions() // 获取绘图动作数组
  8.       });
  9.        // 循环执行动画绘制
  10.        requestAnimationFrame(beginDraw);
  11.     }
  12.     beginDraw();
  13. }

上面代码会循环调用beginDraw()函数, 进行蛇身, 食物的添加等操作…

下面逐行解释代码:
  1. // 获取手机屏幕宽/高
  2. wx.getSystemInfo({
  3.         success: function(res) {
  4.             windowW = res.windowWidth;
  5.             windowH = res.windowHeight;
  6.         }
  7.     })
  8.    // 游戏开始的时候, 弹窗进行游戏说明
  9.     wx.showModal({
  10.         title: ‘请开始游戏’,
  11.         content: “每得”+perSocre+”分,蛇身增长1 “,
  12.         success: function(res) {
  13.             if (res.confirm) {
  14.                  beginGame();
  15.             } else {
  16.                 initGame();
  17.                 // 点击取消 返回上一页
  18.                 wx.navigateBack({
  19.                     delta: 1
  20.                 })
  21.             }
  22.         }
  23.     });

游戏需要使用的变量

  1. // 手指开始位置
  2. var startX = 0;
  3. var startY = 0;
  4. // 手指移动路径
  5. var moveX = 0;
  6. var moveY = 0;
  7. // 差值
  8. var diffX = 0;
  9. var diffY = 0;
  10. var snakeW = 10;
  11. var snakeH = 10;
  12. var context = null;
  13. // 蛇头
  14. var snakeHead = {
  15.     color: “#0000ff”,
  16.     x: 0,
  17.     y: 0,
  18.     w: snakeW,
  19.     h: snakeH
  20. };
  21. // 蛇身 数组
  22. var snakeBodys = [];
  23. // 窗口宽/高
  24. var windowW = 0;
  25. var windowH = 0;
  26. // 食物
  27. var foods = [];
  28. // 蛇头移动方向
  29. var snakeMoveDirection = “right”;
  30. // 总得分(吃到的食物大小-宽度的总和)
  31. var score = 0;
  32. // 蛇身总长(每得perSocre分 +1)
  33. var snakeLength = 0;
  34. // 是否变长/即移除蛇身 (每得perSocre分 变长-蛇身+1)
  35. var shouldRemoveBody = true;
  36. // (每得perSocre分 变长-蛇身+1)
  37. var perSocre = 5;
  38. // 得了count个perSocre分
  39. var count = 1;
  40. // 蛇移动的速度(帧频率—–越大越慢)
  41. var defaultSpeedLevel = 10;
  42. var moveSpeedLevel = defaultSpeedLevel;
  43. //   减慢动画
  44. var perform = 0;
  45. // 吃到食物的次数
  46. var eatFoodCount=0;
  47. // 每 speederPerFood 次吃到食物加速
  48. var speederPerFood = 2;   // 初始化为2  表示每吃到2次食物, 蛇的移动速度增加

初始化游戏配置函数

  1. // 初始化游戏环境
  2. function initGame(){
  3.     snakeHead.x= 0;
  4.     snakeHead.y = 0;
  5.     snakeBodys.splice(0,snakeBodys.length);//清空数组
  6.     snakeMoveDirection = “right”;
  7.     // 上下文
  8.     context = wx.createContext();
  9.     foods.splice(0,foods.length);
  10.     score = 0;
  11.     count = 1;
  12.     moveSpeedLevel = defaultSpeedLevel;  // 恢复默认帧频率
  13.     perform = 0;
  14.     eatFoodCount = 0;
  15.     // 创建食物 20个
  16.     for (var i = 0; i<20; i++) {
  17.         var food = new Food();
  18.         foods.push(food);
  19.     }
  20. }

复制代码

snakeGame.wxml文件中绑定的两个函数(手机点击touchStart/手机移动touchMove)函数
  1. touchStart: function (e){
  2.       startX = e.touches[0].x;
  3.       startY = e.touches[0].y;
  4.     //   console.log(“开始点击”);
  5.   },
  6.   touchMove: function (e){
  7.     //   console.log(“开始拖动手指”);
  8.       moveX = e.touches[0].x;
  9.       moveY = e.touches[0].y;
  10.       diffX = moveX – startX;
  11.       diffY = moveY – startY;
  12.       if ( Math.abs(diffX) > Math.abs(diffY) && diffX>0 && !(snakeMoveDirection == “left”) ){
  13.           //  向右
  14.           snakeMoveDirection = “right”;
  15.         //   console.log(“向右”);
  16.       } else if (Math.abs(diffX) > Math.abs(diffY) && diffX<0 && !(snakeMoveDirection == “right”) ){
  17.           //  向左
  18.           snakeMoveDirection = “left”;
  19.         //   console.log(“向左”);
  20.       } else if (Math.abs(diffX) < Math.abs(diffY) && diffY>0 && !(snakeMoveDirection == “top”) ){
  21.           //  向下
  22.           snakeMoveDirection = “bottom”;
  23.         //   console.log(“向下”);
  24.       } else if (Math.abs(diffX) < Math.abs(diffY) && diffY<0 && !(snakeMoveDirection == “bottom”) ){
  25.           //  向上
  26.           snakeMoveDirection = “top”;
  27.         //   console.log(“向上”);
  28.       }

 

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

资源下载此资源仅限注册用户下载,请先
客服QQ:3482249445
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

所有文章为演示数据,不提供下载地址,版权归原作者所有,仅提供演示效果!

小程序网 小程序 贪食蛇:得分计算/蛇长计算/游戏加速/蛇加长 https://www.10000ii.com/15041.html

上一篇: k-push(含后端)
下一篇: 乐享连江
常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用
查看详情

相关文章

贪食蛇:得分计算/蛇长计算/游戏加速/蛇加长-海报

分享本文封面