找回密码
 立即注册

扫一扫,访问微社区

查看: 4958|回复: 4

微信小程序游戏插件:消灭黑暗势力;随机点路径

  [复制链接]

76

主题

28

回帖

10万

金钱

管理员

积分
0

优秀版主

发表于 2017-1-16 14:12:12 | 显示全部楼层 |阅读模式
楼主收藏的,不多的游戏类demo

项目结构:

代码示例:
[mw_shl_code=applescript,true]//index.js
//获取应用实例
var points = require('../common/points')
var judgeWall = require('../common/judgeWall')
var calculateObs = require('../common/calculateObstacle')
var app = getApp()
Page({
  // 这里声明的是类的全局变量
  data: {
    userInfo: {},
    circleBlackList: [],           // 黑色圆点位置
    circleList: [],                // 圆点数组
    colorCircleFirst: '#FFDF2F',  // 圆点颜色1
    colorCircleSecond: '#FE4D32', // 圆点颜色2
    colorCircleBlack: '#000000',  // 圆点颜色黑色
    isRunning: false,             // 是否正在进行
    blackCircleIndex: 0,           // 黑色圆点
    steps: 0,                      // 点击步数
  },
  //事件处理函数
  bindViewTap: function () {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  // 黄色圆点 点击方法
  tapCircle: function (event) {
    console.log(event);
    var circleID = event.target.id;
    var tpCircleColorList = app.globalData.circleColorList;
    var tpBlackCircleList = this.data.circleBlackList;
    var colorStatus = tpCircleColorList[circleID];
    var blackIndex = this.data.blackCircleIndex;

    if (!colorStatus) {
      // 将点击的点选中
      tpCircleColorList[circleID] = true;
      app.globalData.circleColorList = tpCircleColorList;

      // 如果是墙 则 成功找到出口
      var judge = judgeWall.judgeIfWall(blackIndex, true);
      if (judge) {
        var tstep = this.data.steps;
        tstep = tstep + 1;
        this.setData({
          circleColorList: tpCircleColorList,
          steps: tstep,
        });
        return;
      }

      // 判断逃脱路径
      var path = calculateObs.calculatePath(blackIndex);
      // 如果已经没路走了 则成功围困
      if (path.length == 0) {
        var tstep = this.data.steps;
        tstep = tstep + 1;
        this.setData({
          circleColorList: tpCircleColorList,
          steps: tstep,
        });
        return
      }
      console.log(path);
      // 有路的话则将 原来黑点还原 继续逃出路径的下一点
      tpBlackCircleList[blackIndex] = false;
      blackIndex = path[0];
      tpBlackCircleList[blackIndex] = true;
      // 操作步数
      var tstep = this.data.steps;
      tstep = tstep + 1;

      // 这里是暴露对wxml的数据接口
      this.setData({
        circleColorList: tpCircleColorList,
        circleBlackList: tpBlackCircleList,
        blackCircleIndex: blackIndex,
        steps: tstep,
      });
    }
  },

  onLoad: function () {
    console.log('onLoad');
    var that = this;
    var leftCircle = 7.5;
    var topCircle = 7.5;
    var circleList = [];
    var circleMap = {};
    var circleColorList = [];
    var circleBlackList = [];
    var circleBlackIndexList = [];
    //调用应用实例的方法获取全局数据
    app.getUserInfo(function (userInfo) {
      //更新数据
      that.setData({
        cuserInfo: userInfo
      })
    })
    // 计算每个圆点的top和left
    for (var i = 0; i < 11; i++) {
      for (var j = 0; j < 11; j++) {
        if ((i + 1) % 2 == 0) {
          if (j != 0) {
            leftCircle = (50 + 8) * j + 36;
          } else {
            leftCircle = 36;
          }
        } else {
          leftCircle = 50 * j + 8 * (j + 1);
        }
        topCircle = 50 * i + 8 * (i + 1);
        circleColorList.push(false);
        circleBlackList.push(false);
        circleList.push({ topCircle: topCircle, leftCircle: leftCircle });
      }
    }
    // 注入黑色圆点初始位置随机点位
    circleBlackIndexList = points.blackPoints;
    // 生成随机整数
    var randomIndex = parseInt(24 * Math.random());
    var randomCircleIndex = 60
    // circleBlackIndexList[randomIndex];
    circleBlackList[randomCircleIndex] = true;

    // 构造初始二叉树

    // 为全局变量赋值
    app.globalData.circleColorList = circleColorList;
    that.setData({
      circleColorList: circleColorList,
      circleList: circleList,
      circleBlackList: circleBlackList,
      blackCircleIndex: randomCircleIndex,
    })
  }
})[/mw_shl_code]

[mw_shl_code=applescript,true]/*
*二叉树的节点对象
*/
function Node() {
    this.content = '';           //节点的文本
    this.leftChild = null;    //节点的左孩子引用
    this.rightChild = null;   //节点右孩子引用
}
// 在构建好二叉树节点之后紧接着用递归来构建二叉树
var charecters = ['A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
  'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

function buildTree(node, i) {
    var leftIndex = 2*i+1,                          //左孩子节点的索引
        rightIndex = 2*i+2;                         //右孩子节点的索引
    if(leftIndex < charecters.length) {             //判断索引的长度是否超过了charecters数组的大小
        var childNode = new Node();                 //创建一个新的节点对象
        childNode.text = charecters[leftIndex];     //给节点赋值
        node.leftChild = childNode;                 //给当前节点node加入左孩子节点
        buildTree(childNode, leftIndex);            //递归创建左孩子
    }
    if(rightIndex < charecters.length) {            //下面注释参照上面的构建左孩子的节点
        var childNode = new Node();
        childNode.text = charecters[rightIndex];
        node.rightChild = childNode;
        buildTree(childNode, rightIndex);
    }
}
//下面构造二叉树
var node = new Node();
node.text = charecters[0];
buildTree(node, 0);   //索引i是从0开始构建[/mw_shl_code]

附件下载
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

0

主题

78

回帖

354

金钱

新人求带

积分
0
发表于 2018-3-5 13:20:01 | 显示全部楼层
啥也不说了,感谢楼主分享哇!

0

主题

9

回帖

16

金钱

新人求带

积分
0
发表于 2018-3-13 20:48:16 | 显示全部楼层
6666666666666666666666666666666

0

主题

222

回帖

509

金钱

新人求带

积分
0
发表于 2020-4-10 17:47:14 | 显示全部楼层
我有流量,你有产品,我们就可以合作,有意的个人开发者朋友可以联系微信号jim20180688,详聊

0

主题

8

回帖

38

金钱

新人求带

积分
0
发表于 2020-11-25 16:54:48 | 显示全部楼层
作为一名小白,疯狂找代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|微信小程序开发|教程|文档|资源汇总_即速论坛 ( 粤ICP备14097199号-1  

GMT+8, 2024-12-22 16:15 , Processed in 0.116993 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表