【实例简介】

运用js语言来实现大家来找茬小游戏

【实例截图】

【核心代码】

;~function(){

var d = document,

scene = d.getElementById("scene"),

startBtn = d.getElementById("start-btn"),

timeBox = d.getElementById("time-box"),

timeBar = d.getElementById("time-bar"),

diffFindNum = d.getElementById("diff-find-num"),

topPic = d.getElementById("top-pic"),

bottomPic = d.getElementById("bottom-pic"),

layer = d.getElementById("layer"),

mask = d.getElementById("mask"),

tipsWordArr = ["开始游戏吧!" , "玩累了,休息下吧!" , "时间到,游戏结束!每点错一次扣10s,你的得分是" , "恭喜全部通关!你的得分是" , "开始游戏" , "暂停游戏"],

imgNumArr = [],

imgDiffNum = 0,

imgFindNum = 0,

sceneSwitchTimer = null ,

isPlayAgain = false,

isFirstPlay = true;

startBtn.onclick = function(){

if(isPlayAgain){

game.init();

counter.start(timeBar , true , game.over);

sceneMask.hide();

}

if(this.innerHTML == tipsWordArr[4]){

this.innerHTML = tipsWordArr[5];

if(isPlayAgain){

counter.start(timeBar , true , game.over);

}

else{

counter.start(timeBar , false , game.over);

}

sceneMask.hide();

}

else{

this.innerHTML = tipsWordArr[4];

counter.stop();

sceneMask.show(tipsWordArr[1]);

}

isFirstPlay = false;

}

var game = {

imgRender : function(){

var self = this,

randomNum = 0,

imgNowNum = 0;

imgDiffNum = diffFindNum.innerHTML = 0;  // reset number of matching

topPic.innerHTML = bottomPic.innerHTML = ""; // clear scene content when start game or finished a scene

if(imgNumArr.length){

randomNum = Math.floor(Math.random()*imgNumArr.length); // get the random number of pic

imgNowNum = imgNumArr[randomNum];

imgNumArr.splice(randomNum,1);

}

topPic.innerHTML = "";

bottomPic.innerHTML = "";

var topPicLayer = document.getElementById("top-pic-layer"),

bottomPicLayer = document.getElementById("bottom-pic-layer");

topPicLayer.onclick = bottomPicLayer.onclick = function(){

counter.num -= 10;

}

for(var i = 0 ; i<4 ; i ){

var diff = d.createElement("div"),

diffClone = null;

diff.className = "diff";

diff.setAttribute("index",i);

diff.style["left"] = imgData.imgInfo[imgNowNum].pos[i].x "px";

diff.style["top"] = imgData.imgInfo[imgNowNum].pos[i].y "px";

diff.style["width"] = imgData.imgInfo[imgNowNum].pos[i].w "px";

diff.style["height"] = imgData.imgInfo[imgNowNum].pos[i].h "px";

diffClone = diff.cloneNode("deep");

topPic.appendChild(diff);

bottomPic.appendChild(diffClone);

diffClone.onclick = diff.onclick = function(e){

var diffEle = scene.getElementsByTagName("div"),

thisIndex = this.getAttribute("index"),

e = e || event ;

for(var i = 0 ; i < diffEle.length ; i ){

if(diffEle[i].getAttribute("index") === thisIndex){

if(diffEle[i].className !== "diff selected"){

imgDiffNum ;

diffFindNum.innerHTML = imgDiffNum/2;

diffEle[i].className = " selected"

}

}

}

if(imgDiffNum == 8){

if(imgNumArr.length ===  0){ // game pass

setTimeout(function(){

self.over(imgFindNum);

} , 800);

}

else{  // next pic

sceneSwitchTimer = setTimeout(function(){

self.imgRender();

counter.start(timeBar , true , self.over);

},800);

imgFindNum ;

}

}

e.cancelBubble = true;

}

}

},

over : function(imgFindCount){

if(imgFindCount === imgData.count - 1){ // you win

sceneMask.show(tipsWordArr[3] " " (imgFindNum 1));

}

else{ // time is over

sceneMask.show(tipsWordArr[2] " " imgFindNum);

}

counter.stop();

isPlayAgain = true;

startBtn.innerHTML = tipsWordArr[4];

},

init : function(){

isFirstPlay && sceneMask.show(tipsWordArr[0]);

imgNumArr = [];

for(var n = 0 ; n < imgData.count ; n ){

imgNumArr.push(n);

}

imgFindNum = 0;

isPlayAgain = false;

game.imgRender();

}

}

var counter = {

num : 60,

maxW : timeBox.offsetWidth,

timer : null,

start : function(obj , isPlayAgain , callback){

var self = this;

// reset timebar para when game init

if(isPlayAgain){

self.num = 60;

obj.style["width"] = self.maxW "px";

}

clearInterval(self.timer);

self.timer = setInterval(function(){

self.num--;

if(self.num <= -1){

self.num = 0;

clearInterval(self.timer);

callback && callback();

}

obj.style["width"] = (self.num/60) * self.maxW "px";

},1000);

},

stop : function(){

clearInterval(this.timer);

}

}

var sceneMask = {

show : function(tipsWord){

mask.innerHTML = "

" tipsWord "

";

mask.style["background"] = "rgba(0,0,0,0.8)";

mask.style["display"] = "block";

},

hide : function(){

mask.style["display"] = "none";

}

}

function loadingFn(callback){

var loadingBox = d.getElementById("loading-box"),

loadingBar = d.getElementById("loading-bar"),

progressBar = d.getElementById("progress-bar"),

loadW = loadingBox.offsetWidth,

imgArr = [],

iNow = 0;

for(var i = 0 ; i < imgData.count ; i ){

imgArr.push("images/" (imgData.imgInfo[i].src) "_a.jpg");

imgArr.push("images/" (imgData.imgInfo[i].src) "_b.jpg");

}

function loadImage() {

var showImg = new Image();

showImg.onload = function(){

iNow ;

if(iNow < imgArr.length){

loadingBar.style["width"] = parseInt(iNow/(imgArr.length-1)*loadW) "px";

progressBar.innerHTML = parseInt(iNow/(imgArr.length-1)*100) "%";

loadImage();

}

else{

gameShowTimer = setTimeout(function(){

layer.style["display"] = "none";

callback && callback();

},600);

}

}

showImg.src = imgArr[iNow];

}

loadImage();

}

loadingFn(game.init);

}()

找茬游戏html5源码,大家来找茬游戏以JS实现相关推荐

  1. 在线MG小游戏html5源码

    介绍: 源码很小,要求主机配置并不高,普通主机就可以搭建 内置 眼力测试,优雅跳一跳,像素小鸟,纸飞机,见缝插针,塔块游戏,都不能死,压扁小鸟,疯狂手指,无聊投篮,夹娃娃源码 拥有十多种种在线小游戏, ...

  2. 找不同颜色小游戏html源码,Javascript实现找不同色块的游戏

    游戏规则:在变化数量的颜色块里找出一个不同颜色的块点击 这里使用了JS中的构造函数来创建元素 找不同色块的游戏(构造函数) *{ margin: 0; padding: 0; } #box{ widt ...

  3. 头脑王者对战游戏html5源码,头脑王者分析笔记及微信小程序解包源码

    最近感觉微信小程序比较火,周围很多人在玩"跳一跳"和"头脑王者"之类的小游戏. 对于小程序我也产生了浓厚的兴趣. 一开始看到官方的小程序的介绍,也看了小程序的部 ...

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

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

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

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

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

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

  7. 找茬小程序源码、看图找不同小程序,前端+后端+教程,微信小程序游戏一起来找茬,全网首发一款可以完美运营的找茬小程序源码

    演示小程序搜[最强脑洞I全民烧脑] 一共有2510关, 达到高级后会随机出现关卡: 一共7个能量, 每闯关一次扣除一个能量值, 看激励视频可以获得一个能量值: 金币获取: 段位升级 或者 观看激励视频 ...

  8. 我的CSDN笔记总索引(阅读量降序,代码自动遍历生成HTML5源码)

    Python代码用"命令容器"方法os.system(),调用Linux命令行工具crul获取CSDN博文页面源码,Python内置re正则解析出博文笔记信息,按阅读量降序模块输出 ...

  9. H5幸运盒子幸运砸金蛋微信盲盒游戏网站源码

    H5幸运盒子幸运砸金蛋微信盲盒游戏网站源码(经检查代码不加密,开源),幸运盒子幸运砸金蛋微信盲盒游戏源码下载 礼物盲盒砸金蛋/红包雨/全修复版本/自带积分商城支付及登陆均已对接 最近很多人在找的虎年砸 ...

  10. lua文件服务器,lua游戏服务器源码

    lua游戏服务器源码 内容精选 换一换 简要介绍Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能.语言:C一 ...

最新文章

  1. RESTful之过滤Filtering
  2. MATLAB和Python读取wave文件的波形对比
  3. vc6.0上安装qt插件
  4. Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test)
  5. 多网卡无法上外网的解决
  6. Android之Fragment 真正的完全解析(上)
  7. mysql shell可视化_shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中...
  8. 随想录(协议栈的基本技术)
  9. bzoj 1237: [SCOI2008]配对(DP)
  10. 界面排版-TableLayout的stretchColumns方法
  11. 澳门人均GDP比香港高,但为什么很多人感觉澳门没有香港富有?
  12. VS Code 运行时会弹出Unins000.Exe目标目录创建文件错误
  13. php关闭notice_php怎么关闭notice警告
  14. nice计算机英语,不错的英文,nice的三种意思?
  15. 费曼:任何伟大的科学成就,都源于思想自由
  16. Android App集成支付宝
  17. GB2312字符集对应16进制ANSI、UNICODE、UTF-8编码 (5)
  18. vue项目引入vue-i18n,实现中英文切换
  19. 秋天是掉头发的季节,怎么做才少掉些?!
  20. Windows10关闭系统更新(通过本地组策略)

热门文章

  1. 生活随记-很有意思的评论
  2. 用HTML语言编写下图所示网页,2019-02-21第一章 HTML基础
  3. 第25章 串行FLASH文件系统FatFs
  4. 明日之后 找不到服务器,明日之后服务器不一样怎么办_区服不同如何解决_软吧...
  5. laravel5.5数据库之数据填充(实践)
  6. 数据库设计——手机售卖系统(带源码)
  7. 魔兽和星际最大差别是什么?
  8. 2018-3 至2018-5 菜鸟初涉
  9. android MVX杂谈
  10. 陈强教授《机器学习及R应用》课程 第十五章作业