资讯专栏INFORMATION COLUMN

H5 组词小游戏源代码

chadLi / 3051人阅读

摘要:小游戏篇一组词游戏项目功能简介词库功能,项目文件里配有格式的中文常用词组词库,每次随机抽取词语进行游戏匹配消除功能,自动在词库中匹配选中词语并进行消除选中动画以及消除动画,均由生成爆炸动画智能提醒系统,秒之后未作操作可提示单词过关判定核心代

H5小游戏 篇一 组词游戏

项目功能简介

词库功能,项目文件里配有csv格式的中文常用词组词库,每次随机抽取词语进行游戏

匹配消除功能,自动在词库中匹配选中词语并进行消除

选中动画以及消除动画,均由svg生成爆炸动画

智能提醒系统,10秒之后未作操作可提示单词

过关判定

## 核心代码展示链接描述

https://github.com/fanshyiis/...

获取词库,根据csv文件
$.ajax({
    url: "./js/ck2.csv",
    dataType: "text"
}).done(successFunction);

// 回调函数
function successFunction(data) {
    var allRows = data.split(/
?
|
/);
    for (var singleRow = 1; singleRow < allRows.length; singleRow++) {
        if (allRows[singleRow].length === 2) {
          var m = {
              a: allRows[singleRow][0],
              b: allRows[singleRow][2]
          }
          dataBase.push(m)
        }
    }
}
随机抽取函数
会根据数组的长度获取随机数据
function getArrayItems(arr, num) {
//新建一个数组,将传入的数组复制过来,用于运算,而不要直接操作传入的数组;
var temp_array = new Array();
for (var index in arr) {
    temp_array.push(arr[index]);
}
//取出的数值项,保存在此数组
var return_array = new Array();
for (var i = 0; i0) {
        //在数组中产生一个随机索引
        var arrIndex = Math.floor(Math.random()*temp_array.length);
        //将此随机索引的对应的数组元素值复制出来
        return_array[i] = temp_array[arrIndex];
        //然后删掉此索引的数组元素,这时候temp_array变为新的数组
        temp_array.splice(arrIndex, 1);
    } else {
        //数组中数据项取完后,退出循环,比如数组本来只有10项,但要求取出20项.
        break;
    }
}
return return_array;

}

svg动画渲染插件
  function clear(id) {
  document.getElementById(id).innerHTML = ""
    console.log(id,"-----------------")
      bodymovin.loadAnimation({
container: document.getElementById(id), // 渲染动画的 dom 元素
renderer: "svg",
loop: false,
autoplay: true,
path: "./js/data.json"
  })
  }
var vue = new Vue({
  el: "#vue",
  data: {
      windowBg: false,
      restart: false,
      passNum: cn,
      pass: 1,
    grid: 9,
    allText: null,
    gridList: [],
    text: "春天里柳树发芽百花",
    one: null,
    two: null,
    reData: null,
    timeDuring: 0
  },
  methods: {
      // 重置函数
      reStart () {
          this.restart = true
          setTimeout(function () {
            vue.restart = false
          }, 800)
          this.playAudio("restart")
          this.passNum = cn
          this.gridList = JSON.parse(JSON.stringify(this.reData))
      },
      playAudio (val) {
          var x = document.getElementById(val)
          x.load()
          x.play()
      },
      setTime () {
          this.timeDuring++
          if (this.timeDuring === 10) {
              this.tip()
          }
          console.log(this.timeDuring)
        setTimeout(function () {
            vue.setTime()
        }, 1000)
      },
      tip () {
          let a = ""
          console.log(choose)
          this.gridList.map(val => {
              if (!val.r && val.f) {
                a = a + val.f
              }
          })
          let b = null
          choose.map(val => {
              if (a.indexOf(val.a) !== -1 && a.indexOf(val.b) !== -1) {
                  b = val.a
              }
          })
          if (!b) {
              this.getNextPass()
          }
          if (this.one) {
              this.choose(this.one, "t")
          }
          this.gridList.map(val => {
              if (!val.r && val.f === b) {
                this.one = null
                this.choose(val, "t")
              }
          })
          console.log(a)
      },
      // 选择函数
      choose (item, type) {
          if (type !== "t") {
          this.timeDuring = 0
          }
          if (!item.f) {
              return false
          }
          if (this.one && item.x === this.one.x && item.y === this.one.y) {
              this.playAudio("touchCard")
            item.choose = !item.choose
            this.one = null
              return false
          } else {
              this.playAudio("touchCard")
              item.choose = !item.choose
              if (this.one) {
                  this.two = item
                  // font()
                  // 模拟消除
                  // 加上timeout效果更好
                  var _this = this
                  setTimeout(function () {
                      _this.clearText()
                  }, 300)
              } else {
                  this.one = item
                  // font()
              }
          }
      },
      // 消除逻辑
      clearText () {
          var r = false
          dataBase.map(val =>{
              if (val.a === this.one.f && val.b === this.two.f) {
                  r = true
              }
          })
          if (!r) {
              this.gridList.map(val => {
                  if (val.x === this.two.x && val
                      .y === this.two.y) {
                      val.choose = false
                      this.playAudio("error")
                  }
                  if (val.x === this.one.x && val
                      .y === this.one.y) {
                      val.choose = false
                  }
              })
              this.two = false
              this.one = false
              return false
          }
          this.gridList.map(val => {
              if (val.x === this.one.x && val
                  .y === this.one.y) {
                  clear(val.x + "" + val.y)
                  setTimeout(function () {
                      val.f = ""
                  }, 200)
                  val.r = true
              }
              if (val.x === this.two.x && val
                  .y === this.two.y) {
                  clear(val.x + "" + val.y)
                  setTimeout(function () {
                          val.f = ""
                      }, 200)
                  val.r = true
                  this.playAudio("success")
              }
          })
          this.passNum--
          console.log(this.passNum)
          if (this.passNum === 0) {
              this.playAudio("next")
              this.windowBg = true
          }
          // this.sound_error = true
          this.one = null
          this.two = null
      },
      // 进入下一关
      getNextPass () {
          this.one = false
          this.timeDuring = 0
          this.windowBg = false
          cn = cn + 2,
          this.pass++
          this.passNum = cn
          getDataBase()
          setTimeout(function () {
              font()
          }, 1000)
      },
      //初始化函数
    start () {
      this.gridList = []
      for (var i = 0; i < this.grid; i++) {
          for (var j = 0; j < this.grid; j++) {
         this.gridList.push({
              x: i,
              y: j,
              f: "",
              choose: false,
              r: false,
              m: false
         })
        }
      }
      var l = []
      choose.map(val => {
          l.push(val.a)
          l.push(val.b)
      })
      $("#bggg").click()
      // this.playAudio("bgm")
      console.log(l)
      this.allText = l
      var c = getArrayItems(this.gridList, cn * 2)
      console.log(c)
      c.map((val, index) => {
          val.f = l[index]
      })
      this.reData = JSON.parse(JSON.stringify(this.gridList))
    }
  },
  created () {
      getDataBase()
      this.setTime()
  }
})
其他函数就不一一介绍了
上个图最后

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94901.html

相关文章

  • H5游戏 【篇一】 组词游戏

    摘要:小游戏篇一组词游戏项目功能简介词库功能,项目文件里配有格式的中文常用词组词库,每次随机抽取词语进行游戏匹配消除功能,自动在词库中匹配选中词语并进行消除选中动画以及消除动画,均由生成爆炸动画智能提醒系统,秒之后未作操作可提示单词过关判定库描述 H5小游戏 篇一 组词游戏 项目功能简介 词库功能,项目文件里配有csv格式的中文常用词组词库,每次随机抽取词语进行游戏 匹配消除功能,自动在词...

    CloudwiseAPM 评论0 收藏0
  • 十步零基础JavaScript学习路径

    摘要:之前写过一篇天学通前端开发,内容主要讲的就是前端学习路径,今天再来写一篇零基础的学习路径,希望能帮编程零基础的前端爱好者指明方向。十框架三选一,零基础的初学者强烈推荐,如果是后台转前端推荐,如果技术型前端,推荐。 之前写过一篇26天学通前端开发,内容主要讲的就是前端学习路径,今天再来写一篇零基础的JavaScript学习路径,希望能帮编程零基础的前端爱好者指明方向。 一、开发环境和Ja...

    incredible 评论0 收藏0
  • 白鹭引擎王泽:重度H5游戏性能优化技巧标题的文章

    摘要:据不完全统计,这五年中,白鹭引擎累计运转的游戏和微信小游戏的流水数据约为亿。 我们的引擎架构师做某一沙龙活动的演讲速记,纯纯的干货,分享给大家。 王泽:各位开发者下午好!我叫王泽,是白鹭引擎的首席架构师。 今天给大家分享的题目是《重度H5游戏性能优化技巧》。之所以决定用这个题目,是因为我最近几周在广深一带拜访了很多使用白鹭引擎的开发者,发现特别是在广州一带,大部分开发者都在做重度H5游...

    xbynet 评论0 收藏0
  • 你踩过几个?微信H5游戏开发中的那些坑

    摘要:眼下小游戏特别火,不少团队也陆续启动了微信小游戏的项目,并于立项前期进行技术预研究。但从微信官方文档看却能发现不少坑。对微信小游戏和浏览器之间的运行环境差异无感知,非常友好。微信小程序要求开发者的服务器支持协议。 眼下小游戏特别火,不少团队也陆续启动了微信小游戏的项目,并于立项前期进行技术预研究。但从微信官方文档看 , 却能发现不少坑。 一、运行环境的坑 1.API兼容性 1.1、网络...

    calx 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<