微信小程序开发之实现别踩白块游戏

 更新时间:2023年02月07日 10:57:32   作者:失散多年的哥哥  
这篇文章主要为大家详细介绍了如何通过微信小程序开发一个简单的别踩白块游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以和小编一起学习一下

一、项目展示

别踩白块是一款微信小游戏

分为无尽模式、计时模式、急速模式三种模式

用户需要点击不断移动的黑色方块

若点击到白色方块则游戏结束

二、无尽模式

无尽模式下可以一直进行游戏

直到失败为止

其中方块的生成和点击计数代码如下:

<!--play.wxml-->
<view class="score">{{score}}</view>
<view class="play-box">
    <block wx:for="{{blockData}}" wx:for-index="i" wx:key="i">
        <view class="block-line" id="line-{{blockData[i].id}}">
            <block wx:for="{{blockData[i].block}}" wx:key="*this" wx:for-index="j">
                <view wx:if="{{blockData[i].block[j] == 0}}" id="block-{{blockData[i].id}}-{{j}}-{{0}}" class="block" bindtap="handleClick"></view>
                <view wx:else class="block black" id="block-{{blockData[i].id}}-{{j}}-{{1}}" bindtap="handleClick"></view>
            </block>  
        </view>
    </block>
</view>
// play 
var app = getApp()
Page({
  data: {
    typeName: '无尽模式',
    silding: false,
    score: 0,
    blockData:[]
  },
  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()
      });
  },
  handleClick: function(events){
      var id = events.currentTarget.id;
      var line = id.split("-")[1];
      var column = id.split("-")[2];
      var isBlack = id.split("-")[3];
      var blockData = this.data.blockData.reverse();
      var score = this.data.score;
      var orderArray = [0,0,0,0];
      // 判断是否是第一行
      if(line != blockData[0].id){
        this.handleWrong(0, score);
        return;
      }
      // 判断是否正确
      if(isBlack != 1){
        this.handleWrong(1, score);
        return;
      }

      // 正确下一个
      // 分数++
      // 最后一个小块的id为分数+10
      score++;
      orderArray[Math.floor(Math.random() * 4)] = 1;
      blockData.push({id: score+10, block: orderArray});
      blockData.shift();
      this.setData({
          silding: true,
          score: score,
          blockData: blockData.reverse()
      });
  },
  handleWrong: function( type , score){
      const titleArr = ["请点击第一个白块!游戏结束", "别点白块!游戏结束"];
      wx.showToast({
            title: titleArr[type],
            icon: 'cancel', 
            duration: 2000,
            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);
            }
        })
  },
  onLoad: function(){
      var that = this;
      wx.setNavigationBarTitle({
        title: that.data.typeName
      });
  }
})

具体的代码和实现效果如下

三、计时模式

计时模式下

用户将在指定时间内点击黑块

时间到则结束游戏

四、急速模式

急速模式下

黑块的移动速度提升

到此这篇关于微信小程序开发之实现别踩白块游戏的文章就介绍到这了,更多相关小程序别踩白块游戏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS简单计算器实例

    JS简单计算器实例

    这篇文章主要介绍了JS简单计算器的实现方法,以加法实例分析了js实现计算功能的技巧,需要的朋友可以参考下
    2015-01-01
  • Threejs与Tween.js结合创建动画的详细图文教程

    Threejs与Tween.js结合创建动画的详细图文教程

    three.js和tween.js可以一起使用,实现复杂的动画效果,包括飞线动画,这篇文章主要给大家介绍了关于Threejs与Tween.js结合创建动画的相关资料,需要的朋友可以参考下
    2024-01-01
  • 谈谈JavaScript类型系统之Math

    谈谈JavaScript类型系统之Math

    Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(),像 Math.sin() 这样的函数只是函数,不是某个对象的方法。您无需创建它,通过把 Math 作为对象使用就可以调用其所有属性和方法
    2016-01-01
  • js判断非127开头的IP地址的实例代码

    js判断非127开头的IP地址的实例代码

    这篇文章主要介绍了js判断非127开头的IP地址,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 关于URL中的特殊符号使用介绍

    关于URL中的特殊符号使用介绍

    因为经常被Javascript中的rul的相关知识困扰,今天来总结一下URL的特殊字符
    2011-11-11
  • JavaScript实现单点登录的示例

    JavaScript实现单点登录的示例

    这篇文章主要介绍了JavaScript实现单点登录的示例,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下
    2020-09-09
  • 用javascript动态调整iframe高度的代码

    用javascript动态调整iframe高度的代码

    用javascript动态调整iframe高度的代码...
    2007-04-04
  • JS中toFixed()方法引起的问题如何解决

    JS中toFixed()方法引起的问题如何解决

    最近发现JS当中toFixed()方法存在一些问题,采用原生的Number对象的原型对象上的toFixed()方法时,规则并不是所谓的“四舍五入”或者是四舍六入五成双
    2012-11-11
  • 游戏开发中如何使用CocosCreator进行音效处理

    游戏开发中如何使用CocosCreator进行音效处理

    这篇文章主要介绍了游戏开发中如何使用CocosCreator进行音效处理,并对音效组件进行封装,方便以后使用,同学们看完之后,一定要亲手实验一下
    2021-04-04
  • 原生js实现日期选择插件

    原生js实现日期选择插件

    这篇文章主要为大家详细介绍了原生js实现日期选择插件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05

最新评论