微信小程序(应用号)红红火火恍恍惚惚

谁是卧底微信版

2019-03-20  本文已影响0人  tcz520

近期弄了一个谁是卧底微信小程序线下版,只要一部手机就能完成游戏整个流程。下图为程序二维码


gh_2a703d5921c8_430.jpg

程序通过一部手机设定游戏人数,包括平民、卧底和白板的数量,点击开始游戏后,会生成意思相近的两个词语,参与人依次点击查看自己的词语,保证属于自己的词语不被其他人看到。游戏过程中,大家投票过后,可在相应界面点击投票数最多的人的序号查看此人的身份,直到游戏结束。


人数配置.jpg
词语查看.jpg
查看身份.jpg

此项目采用wepy框架开发,包含首页模块、配置人数模块、词语查看模块、结果查看模块。
下面为一局游戏生成核心代码:

/**
 * 生成一局游戏
 * @returns array 所有角色对应的词语数组
 */
static createGame() {
  this.allPlayerWordArray = []
  // 词语数组
  const wordDataArray = dataArray
  // 词语数组长度
  const wordDataArrayLen = dataArray.length
  // 生成一个随机数,获取当前游戏的词语
  const randomNum = this.createRandom(0, wordDataArrayLen)
  // 平民的词
  const civilianWord = wordDataArray[randomNum][0]
  // 卧底的词
  const spyWord = wordDataArray[randomNum][1]
  // 获取游戏角色人数
  const playerNumArr = this.getGamePlayer()
  // 总人数
  this.allPlayerNum = playerNumArr[0]
  // 平民人数
  this.civilianPlayerNum = playerNumArr[1]
  // 卧底人数
  this.spyPlayerNum = playerNumArr[2]
  // 白板人数
  this.whiteboardPlayerNum = playerNumArr[3]
  // 总人数
  const allNum = this.allPlayerNum
  // 卧底人数
  const spyNum = this.spyPlayerNum
  // 白板人数
  const whiteboardNum = this.whiteboardPlayerNum
  // 卧底和白板总数
  const swNum = spyNum + whiteboardNum
  // 卧底和白板总的数字数组
  let swRandomArr = []
  for (let i = 0; i < swNum; i++) {
    const csRandom = this.createRandom(0, allNum)
    if (swRandomArr.indexOf(csRandom) === -1) {
      swRandomArr.push(csRandom)
    } else {
      i--
    }
  }
  // 卧底随机数字数组
  let sRandomArr = swRandomArr.slice(0, spyNum)
  // 白板随机数字数组
  let wRandomArr = swRandomArr.slice(spyNum, swNum)
  let allPlayerWordArr = []
  // 角色类型
  const role = this.roleArray
  for (let j = 0; j < allNum; j++) {
    let obj = {
      checked: false,
      liveFlag: j + 1 + '号玩家,存活'
    }
    // 卧底
    if (sRandomArr.indexOf(j) > -1) {
      obj.role = role[1]
      obj.word = spyWord
    }
    // 白板
    else if (wRandomArr.indexOf(j) > -1) {
      obj.role = role[2]
      obj.word = ''
    }
    // 平民
    else {
      obj.role = role[0]
      obj.word = civilianWord
    }
    allPlayerWordArr[j] = obj
  }
  this.allPlayerWordArray = allPlayerWordArr
  return allPlayerWordArr
}

需要查看更多源码的请评论联系我!

上一篇下一篇

猜你喜欢

热点阅读