谁是卧底微信版

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


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
}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 开源项目 wepy-wechat-demo:基于wepy开发的仿微信聊天界面小程序 深大的树洞:基于wepy开发的...
    dufebin阅读 4,155评论 0 19
  • 每次写日记都是孩子睡了,我困的睁不开眼的时候才写,边写边能睡着的感觉…… 下午博博围棋课,结果我给忘...
    画心ll阅读 196评论 0 0
  • 文|零度魍珏 偶然听到陈奕迅的歌——孤独患者。活像个孤独患者,自我拉扯,外向的孤独患者有何不可。 回想起来,自从大...
    云渡魍珏阅读 461评论 2 0
  • 概述 jQuery是一个JavaScript函数库。jQuery是一个轻量级的"写的少,做的多"的JavaScri...
    夜月行者阅读 220评论 0 1
  • 老王喜欢吃包子,更喜欢做包子,他的包子吃起来总有一种特别的味道,别人都说不上来,但是吃包子的人都连连叫好。 老王...
    南湾孤岛阅读 1,180评论 0 3