H5小游戏 篇一 组词游戏

项目功能简介

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

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

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

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

过关判定

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

获取词库,根据csv文件

$.ajax({

url: './js/ck2.csv',

dataType: 'text'

}).done(successFunction);

// 回调函数

function successFunction(data) {

var allRows = data.split(/\r?\n|\r/);

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; i

//判断如果数组还有可以取出的元素,以防下标越界

if (temp_array.length>0) {

//在数组中产生一个随机索引

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()

}

})

其他函数就不一一介绍了

上个图最后

h5网页小游戏php源码,H5 组词小游戏源代码相关推荐

  1. 大型商城系统源码 PC+小程序+APP源码+H5 全套源代码

    大型多商户B2B2C商城源码 Java商城源码 PC+小程序+APP源码+H5+商家端+总后台 开发环境:Java+springboot+Vue+Uni-app 一.平台端 功能支持: • 系统设置 ...

  2. php和javascript的get和post方式 有人串口转wifi模块httpdclient网页交互通信成功源码2 wifi继电器小黄人软件ypnr

    全部源码下载:链接: http://pan.baidu.com/s/1qXxr0i4 密码: 有人串口转wifi模块 httpd client通信示例-用户使用网页通过服务器收发串口数据get 功能: ...

  3. c语言设计垃圾分类答题游戏,小程序案例源码001~垃圾分类+答题小程序效果演示...

    今天我们来讲下垃圾分类小程序的部署,部署中一些细节的问题也会给大家讲解下. 老规矩,先看效果图 支持搜索查询和垃圾图片识别 搜索到垃圾后,可以显示属于那种垃圾 可以自己添加新的未知垃圾 垃圾分类科普视 ...

  4. 小视频系统源码H5 直播起航

    一.视频流协议HLS与RTMP HTTP Live Streaming 加粗样式HTTP Live Streaming(简称 HLS)是一个基于 HTTP 的视频流协议,由 Apple 公司实现,Ma ...

  5. 微信社区小程序源码/h5/圈子论坛贴吧交友/博客/陌生人社交/宠物/话题/私域/同

    源码介绍: 今天学习小程序开发的时候,遇到这么一个非常不错的小程序,前端后端完善,也是少许花了点钱,不过免费分享给咱们锦尚中国的会员们了(外面都是要花钱购买才可以下载的,拿去学习学习吧,对自己提升很有 ...

  6. html实现扫雷小游戏(附源码)

    文章目录 实现功能 1.扫雷设计 1.1 主界面 1.2 扫雷难度 1.3 附带功能 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blo ...

  7. flash高科技php网站源码下载,Flash小游戏PHP源码

    项目包里有两种版本, 第一种是:UTF-8 PHP版本 第二种是:UTF-8 伪静态版本(如果空间支持,强烈建议使用此版本,对搜索引擎友好) 开源项目:flash游戏源码,小游戏PHP源码,休闲fla ...

  8. 微信小程序github源码大全下载

    微信小程序实例源码大全下载 微信小应用示例代码(phodal/weapp-quick) 源码链接:https://github.com/phodal/weapp-quick 微信小应用地图定位demo ...

  9. Android3D抽方块源码,block puzzle jewel 方块拼图消除游戏安卓源码

    [实例简介] block puzzle jewel 方块拼图消除游戏安卓源码,俄罗斯方块变种小游戏,拉拽方块放入,一行或一列消除 [实例截图] [核心代码] f4c3b198-e210-420c-af ...

  10. (转)微信小程序实例源码大全

    https://www.cnblogs.com/tuyile006/p/6268961.html 微信小程序实例源码大全下载 微信小应用示例代码(phodal/weapp-quick) 源码链接:ht ...

最新文章

  1. 【 C 】指针数组案例分析(const的作用)
  2. UVa122-Trees on the level
  3. 自定义request_Spring Security 自定义登录认证(二)
  4. java基础(十) 深入理解数组类型
  5. 访客IP API接口
  6. ios13 无法传参_iOS13个人热点功能频遭投诉
  7. C++中字符串转换函数to_string
  8. 谷歌大脑QT-Opt算法,机器人探囊取物成功率96%,Jeff Dean大赞
  9. 2018年蓝桥杯C++B;乘积尾零(拆分法)
  10. 贫血模式or领域模式(转载)
  11. 线性调频信号(LFM)时域与频域分析
  12. 日立仪器安捷伦系统不能连接到服务器,【维修案例】安捷伦E5071C网络分析仪开机无法正常进入系统...
  13. InputBox接收数字,并将该数字转成int型
  14. 用Credential Harvester Attack Method登录人人网
  15. Vine已死,秒拍抱团崛起,同是视频社交差距在哪?
  16. android:详细解读DialogFragment
  17. python提取excel一列或多列数据另存为新表(1)
  18. 计算机科学与技术专业每年毕业人数,毕业生人数最多的10个本科专业:计算机科学与技术...
  19. SQL分组查询,结果只取最新记录
  20. 【渝粤教育】广东开放大学 计算机导论 形成性考核 (51)

热门文章

  1. linux 不识别ar9380,用Linux做wifi熱點/無線路由
  2. 算法设计与分析(第2版)屈婉玲 刘田 张立昂 王捍贫编著 第四章课后习题答案
  3. EPS学习笔记3----------常用地物采集方法(房屋,斜坡,台阶)
  4. 浏览器 pad android,安卓平板专享 推荐五款Pad版应用浏览器
  5. 005 Java反射面试题
  6. 如何计算CRC循环校验码示例
  7. APK签名之keytool生成keystore和jarsigner签名apk
  8. DevExpress ChartControl 实现多轴
  9. 分享一下海康威视古老的播放器源码
  10. Matlab遗传算法工具箱及应用