微信小游戏之别踩白块

简介: 微信小游戏之别踩白块

image.png

相信很多人都玩过这种小游戏,就是遇到黑色键就需要点,遇到白色键就绝对不能点。如果没有点到黑块或者点中了白块,都算输。

 onReady: function(){
      var array = [];
      // 先生成一个10个长度的数组
      for(var i = 0; i < 10; i++){
          // 生成一个随机位数为1的数组
          var orderArray = [0,0,0,0];
          var randomNum = Math.floor(Math.random() * 4);
          orderArray[randomNum] = 1;
          array.push({id: i, block: orderArray});
      }
      this.setData({
          blockData: array.reverse()
      });
  },

我们可以看见游戏里面一共四条道。我们的初始化是先确定前10个按键,随机出1~4的数字,随机出来便是哪一条道是黑色按键。

  run: function(){
      // 滑动方法
      var that = this;
      var speed = 10;

      this.setData({
          canRun: true
      });

      var timer = setInterval(function(){
          // 当前滑动距离
          if(!that.data.canRun){
              clearInterval(timer);
              return;
          }
          
          var currentScrollHeight = that.data.scrollHeight;
          // 当前分数
          var score = that.data.score;
          // 滑块数据
          var blockData = that.data.blockData.concat().reverse();

          if(Math.abs(currentScrollHeight) == 150){
              // 滑到临界点
              // 判断是否过期
              // 判断条件是 第一个滑块的状态是否为已点击
              if(that.checkFirstLineBlockClicked(blockData[0].block)){
                  // 继续 去除旧节点 插入新节点 scrolllHeight归0
                  var newId = blockData[blockData.length - 1].id + 1;
                  blockData.push(that.getNewLine(newId));
                  blockData.shift();
                  that.setData({
                      scrollHeight: 0,
                      blockData: blockData.concat().reverse()
                  });
                  return;
              }
              // 报错
              that.handleWrong("请点击白块!游戏结束", score);
              return;
          }

          currentScrollHeight = currentScrollHeight - speed;
          that.setData({
              scrollHeight: currentScrollHeight
          });
      }, 20);
  },

上面这一段逻辑是游戏的核心所在,就是让黑白键向下滑动。如果是黑键超过了临界值,这时候需要判断一下是否已经被点击过了。如果被点击过那就会有标记起来,这里只需要判断是否已经被标记就行。如果没有标记点过的,那就可以直接判输。

complete: function(){
                // 将此分数存入全局变量
                app.globalData.currentScore = score;
                // 若此分数比最高分数还高 将其存入本地
                if(score > app.globalData.endlessScore){
                    app.globalData.endlessScore = score;
                    wx.setStorageSync('endlessScore',score);
                }
                var timer = setTimeout(function(){
                        wx.redirectTo({
                            url: '../end/end?type=endless&score=' + score
                        })
                        clearTimeout(timer);
                    }, 2000);
            }

这里表示已经完成了游戏,然后将最高分保存到游戏中。用的是wx.setStorageSync('endlessScore',score);可以永久保存。

整体来说设计不算太难,有想要深入探讨学习的,可以关注公众号:诗一样的代码,找我一起学。

相关文章
|
7月前
|
小程序 索引 容器
微信小游戏制作工具中的滚动列表插件如何使用?
微信小游戏制作工具中的滚动列表插件如何使用?
170 1
|
2月前
|
数据可视化 前端开发 小程序
5G时代-探索微信小游戏
5G时代-探索微信小游戏
33 2
5G时代-探索微信小游戏
|
2月前
|
缓存 数据可视化 Serverless
微信小游戏 案例一 像素飞机
微信小游戏 案例一 像素飞机
21 2
|
6月前
|
存储 JSON 测试技术
【cocos 2d微信小游戏开发教程】基础使用笔记分享(三)
【cocos 2d微信小游戏开发教程】基础使用笔记分享(三)
54 0
|
6月前
|
容器
【cocos 2d微信小游戏开发教程】基础使用笔记分享(二)
【cocos 2d微信小游戏开发教程】基础使用笔记分享(二)
85 0
|
6月前
|
API 开发者
【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)
【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)
155 0
|
6月前
微信小游戏全局开启好友和朋友圈分享功能
微信小游戏全局开启好友和朋友圈分享功能
61 0
|
7月前
微信小游戏制作工具中文字设置的粗体不显示,怎么解决?
微信小游戏制作工具中文字设置的粗体不显示,怎么解决?
205 1
|
7月前
|
开发者
作为微信小游戏开发者,这份白皮书不看可太吃亏了!
作为微信小游戏开发者,这份白皮书不看可太吃亏了!
203 1
|
7月前
|
开发工具 图形学 计算机视觉
微信小游戏制作工具跟其它游戏引擎有什么区别?该怎么选?
微信小游戏制作工具跟其它游戏引擎有什么区别?该怎么选?
232 0