• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

微信小程序(游戏)----拖拽拼图(图片分块和打乱顺序)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
效果图

图片分块

  1. 创建二维数组 typeArr 和一维有序数组 pointsArr;
  2. 计算每个块区view的定位坐标(x,y)和view的背景坐标(px,py)、以及每个view的顺序 count;
  3. 填充数组 pointsArr 的对应值 count 进行记数。
initTypeArr(){
    let arr = [],count = 0;
    for(let i = 0; i < this.type; i++){
      arr[i] = [];
      for(let j = 0; j < this.type; j++){
        arr[i].push({
          x: j,
          y: i,
          px: j,
          py: i,
          count: count
        });
        this.pointsArr.push(count);
        count++;
      }
    }
    this.typeArr = arr;
  }

数组顺序打乱

  1. 通过循环数组 pointsArr ,每次循环产生一个数组长度内的数,将当前位置的数和随机数位置的数进行交换(打乱数组 pointsArr);
  2. 创建打乱坐标数组的 newTypeArr,数组 newTypeArr 的view坐标不变,只是改变背景坐标,从而形成图片的打乱顺序。
randomArr(){
    let len = this.pointsArr.length - 1;
    for(let i = 0; i < len; i++){
      let index = parseInt(Math.random() * len);
      let current = this.pointsArr[i];
      this.pointsArr[i] = this.pointsArr[index];
      this.pointsArr[index] = current;
    }
    for (let j = 0, le = this.typeArr.length; j < le; j++){
      let arr = this.typeArr[j];
      this.newTypeArr[j] = [];
      for (let k = 0,l = arr.length; k < l; k++){
        let val = arr[k];
        this.newTypeArr[j].push({
          x: val.x,
          y: val.y,
          px: this.pointsArr[val.count] % this.type,
          py: parseInt(this.pointsArr[val.count] / this.type),
          count: val.count
        })
      }
    }
  }

注意

1、打乱顺序的随机数必须是小于length,否则 pointsArr[pointsArr.length] 不存在会进行报错。
2、打乱顺序只是打乱背景图片的顺序,而不是每个view的顺序,记住view始终没有发生位置的变化。

下载

我的博客,欢迎交流!

我的CSDN博客,欢迎交流!

微信小程序专栏

前端笔记专栏

微信小程序实现部分高德地图功能的DEMO下载

微信小程序实现MUI的部分效果的DEMO下载

微信小程序实现MUI的GIT项目地址

微信小程序实例列表

前端笔记列表

游戏列表


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如何在uni中引入字体图标并能在小程序中使用发布时间:2022-07-18
下一篇:
微信小程序实现验证码倒计时效果发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap