js实现简单翻牌小游戏

本文实例为大家分享了js实现简单翻牌小游戏的具体代码,供大家参考,具体内容如下

1.简介

非常简单的一个网络消消乐翻牌小游戏的实现,代码量较少,不过遇到的bug和自行开发的步骤十分有纪念意义。

2.核心代码块

生成随机数列,确定图片随机分布

function getImgIndex(is){
   var index = parseInt(Math.random()*8)+1;
         if(is[index] < 2){
             is[index]++;
              } else {
             index = getImgIndex(is);
           }
        return index;
  }

通过window.onload函数定义8个背景图片随机分布

window.onload = function(){
      //规则:五个背景图,每张图出现两次,随机分配到16个div中
        var ele = document.getElementById("parent");
        var imgs = [1,2,3,4,5,6,7,8];
        var is = [0,0,0,0,0,0,0,0,0];
         for(var i = 0; i < 16; i++){
              var index = getImgIndex(is);
               console.info(index);
               ele.innerHTML += "<div id='k"+i+"' class='kid' "
                  +"οnclick='oclick(this.id,"+index+");'></div>";    
                //通过字符串拼接方式,将H5代码发送给网页执行            
          }
}

点击图片事件
oclick函数中利用f存储上个图片的index,;利用id2存储上个图片的id
再进行以下操作比较

function oclick(id,index)
            {   
                if(find[index]<2)
                {
                if(f==0){
                find[index]++;
                look(id,index);
                f=index;
                id2=id;
                }
                else
                {
                    if(f==index&&id!=id2)
                    {   
                        find[index]++;
                        look(id,index);
                        f=0;
                        id2=0;
                        marked++;
                    }
                    else
                    {   
                        find[f]=0;
                        look(id,index);
                        look(id2,f);
                        clearStyle(id);
                        clearStyle(id2);
                        f=0;
                        id2=0;
                    }
                }
                }
                if(marked==8)
                {
              alert("恭喜完成");
     }
}

图片操作函数

function look(id,index){
 var ele = document.getElementById(id);
     ele.style="background-image: url("+index+".gif);";
       }
         function clearStyle(id){
          setTimeout(function(){
            var ele = document.getElementById(id);
            ele.style="";
          }, 200);
 }

重置页面函数

function re(){
                window.location.reload();
            }

页面的设计

<body>
   <div id="parent" class="par"></div>
   <input type="button" name="b1" id="b1" value="再van♂一次" onclick="re();"/>
</body>

3.已知bug 说明(已解决)

1.点击图片本身两次导致匹配成功

解决方式:加入id判断是否为自身比较

f==index&&id!=id2

2.已匹配的图片再次点击会消除

解决方式:加入find[]数组统计图片点击次数,超过两次不再比较

if(find[index]<2)

4.全文代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
        /* 父子网页界面设计 */
           .kid{
               width: 100px;
               height: 100px;
               background-color: #aaffff;
               border: 1px solid black;
               margin: 10px;
               float: left;
           }
           .par{
               width: 1000px;
               padding: 10px;
               border: 1px solid black;
               float: left;
           }
        </style>
        <script>
             var f=0;
             var id2=0;
             var find = [0,0,0,0,0,0,0,0,0];
             var marked=0;
            window.onload = function(){
                //规则:五个背景图,每张图出现两次,随机分配到16个div中
                var ele = document.getElementById("parent");
                
                var imgs = [1,2,3,4,5,6,7,8];                 
                
                var is = [0,0,0,0,0,0,0,0,0];
                
                for(var i = 0; i < 16; i++){
                    var index = getImgIndex(is);
                    console.info(index);
                    ele.innerHTML += "<div id='k"+i+"' class='kid' "
                        +"οnclick='oclick(this.id,"+index+");'></div>";                
                }
            }
            function getImgIndex(is){
                var index = parseInt(Math.random()*8)+1;
                if(is[index] < 2){
                    is[index]++;
                } else {
                    index = getImgIndex(is);
                }
                return index;
            }
            function oclick(id,index)
            {   
                if(find[index]<2)
                {
                if(f==0){
                find[index]++;
                look(id,index);
                f=index;
                id2=id;
                }
                else
                {
                    if(f==index&&id!=id2)
                    {   
                        find[index]++;
                        look(id,index);
                        f=0;
                        id2=0;
                        marked++;
                    }
                    else
                    {   
                        find[f]=0;
                        look(id,index);
                        look(id2,f);
                        clearStyle(id);
                        clearStyle(id2);
                        f=0;
                        id2=0;
                    }
                }
                }
                if(marked==8)
                {
                    alert("恭喜完成");
                }
            }
            function look(id,index){
                var ele = document.getElementById(id);
                ele.style="background-image: url("+index+".gif);";
            }
            function clearStyle(id){
                setTimeout(function(){
                        var ele = document.getElementById(id);
                        ele.style="";
                    }, 200);
            }
            function re(){
                window.location.reload();
            }
        </script>
    </head>
    <body>
        <div id="parent" class="par"></div>
            <input type="button" name="b1" id="b1" value="再van♂一次" onclick="re();"/>
    </body>
</html>

注意:使用需修改图片地址url

实现效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • js时钟翻牌效果实现代码分享

    先给大家上运行效果图,看看是不是特别棒! 这一张是小编抓拍时钟翻牌时的效果图: 为大家分享的JavaScript时钟翻牌效果代码如下 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Create an Animated Flip Down Clock</title> <link rel=&quo

  • JS小游戏之仙剑翻牌源码详解

    本文实例讲述了JS小游戏的仙剑翻牌源码,是一款非常优秀的游戏源码.分享给大家供大家参考.具体如下: 一.游戏介绍: 这是一个翻牌配对游戏,共十关. 1.游戏随机从42张牌中抽取9张进行游戏,每组为2张相同的牌,共18张牌. 2.连续翻到两张相同的为胜利,当9组全部翻到则过关.如不是翻到连续两张相同的,则需要重新翻. 3.游戏共有10关,在规定时间内通过为挑战成功. 4.如果某关在规定时间内没有通过,则会从当前关继续游戏. 5.游戏中的卡牌图片与音乐均为大宇公司所有. 6.需要支持html5的浏览

  • 基于javascript实现句子翻牌网页版小游戏

    本文实例为大家分享了js实现句子翻牌网页版小游戏,供大家参考,具体内容如下 效果图: 实现思路: 考察打字能力和记忆能力的益智小游戏. 1.会先把一段文字显示 2.一小段时间后显示背面 3.输入框输入文字与文字全部对应显示正面 具体代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>

  • 原生JS实现记忆翻牌游戏

    本文实例为大家分享了JS实现记忆翻牌游戏的具体代码,供大家参考,具体内容如下 html代码 <div id="game"> <!-- div.block*16>div.pic --> </div> css代码 * { padding: 0; margin: 0; } #game { width: 600px; height: 600px; margin: 0 auto; } .block { float: left; box-sizing: b

  • js实现翻牌小游戏

    本文实例为大家分享了js实现翻牌小游戏的具体代码,供大家参考,具体内容如下 效果图 需求分析 1.生成两组顺序随机的1-8数据 2.卡片需要有翻转效果 3.两次翻转数据不相等,回复原状 4.两次翻转数据相等,卡片相等,不能再被点击 5.当所有卡片不能被点击游戏结束 6.限制最大点击次数50次 HTML结构 <div class="wrap"> <div> <p class="top"></p> <p class=

  • js实现简单翻牌小游戏

    本文实例为大家分享了js实现简单翻牌小游戏的具体代码,供大家参考,具体内容如下 1.简介 非常简单的一个网络消消乐翻牌小游戏的实现,代码量较少,不过遇到的bug和自行开发的步骤十分有纪念意义. 2.核心代码块 生成随机数列,确定图片随机分布 function getImgIndex(is){    var index = parseInt(Math.random()*8)+1;          if(is[index] < 2){              is[index]++;      

  • js实现简单拼图小游戏

    本文实例为大家分享了js实现简单拼图小游戏的具体代码,供大家参考,具体内容如下 游戏很简单,拼拼图,鼠标拖动一块去和另一块互换.语言是HTML+js,注释写的有不明白的可以留言问一下. 截图 代码区 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <style type="text/

  • js+canvas实现简单扫雷小游戏

    扫雷小游戏作为windows自带的一个小游戏,受到很多人的喜爱,今天我们就来尝试使用h5的canvas结合js来实现这个小游戏. 要写游戏,首先要明确游戏的规则,扫雷游戏是一个用鼠标操作的游戏,通过点击方块,根据方块的数字推算雷的位置,标记出所有的雷,打开所有的方块,即游戏成功,若点错雷的位置或标记雷错误,则游戏失败. 具体的游戏操作如下 1.可以通过鼠标左键打开隐藏的方块,打开后若不是雷,则会向四个方向扩展 2.可以通过鼠标右键点击未打开的方块来标记雷,第二次点击取消标记 3.可以通过鼠标右键

  • 使用vue.js编写蓝色拼图小游戏

    之前在网上看到<蓝色拼图>这款小游戏,作者是用jquery写的.于是便考虑能不能用vue.js优雅简单的编写出来呢? Later equals never!说干就干.首先理解游戏的规则:第一关为1*1的方块,第二关为2*2以此类推 该图为第三关3*3的方块.点击一个小方块,该方块和它相邻的方块的的颜色会从黄色变为蓝色,全部变为蓝色就过关了. 现在规则清楚了,开动吧! /*style*/ .game_bg{ background: #333; width: 600px; height: 600p

  • 基于JS实现简单滑块拼图游戏

    成品效果 <body> <div id="game" style="position:relative"></div> </body> /** * js配置 */ var config = { width: 300, height: 300, img: "./img/fj.jpg", gameDom: document.getElementById("game"), row: 3

  • Phaser.js实现简单的跑酷游戏附源码下载

    采用的物理引擎是Phaser.js 官网地址:http://phaser.io/ 在这里对此引擎不做过多介绍(因为我也是小白,嘿嘿) 效果展示: 源码(详细源码图片资源可点击文章下方或屏幕右上方的github链接进行clone) 1.创建游戏舞台 var config = { type: Phaser.AUTO, width: 800, height: 400, physics: { default: 'arcade', arcade: { gravity: { y: 300 }, debug:

  • js实现双人五子棋小游戏

    本文实例为大家分享了js实现双人五子棋小游戏的具体代码,供大家参考,具体内容如下 这是自己自学js的时候,在网上找的js源码,由于是自学,花了数小时才把这个源码大致弄明白. 大致算法 自定义棋盘规格,直接在棋盘建新div就可以,长度宽度用计算就可以了.下棋,在div里再建class,这里要给每个class标一个site值,由site值写出该棋子竖直方向和横向的坐标,由坐标可以写出棋子胜利的条件.而棋子的黑白走是用标识符,偶的标识符则是白棋子的class.奇的标识符则是黑棋子的class. ps

  • js实现简单贪吃蛇游戏

    本文实例为大家分享了js实现简单贪吃蛇游戏的具体代码,供大家参考,具体内容如下 上下左右键控制方向使贪吃蛇吃葡萄 吃5个葡萄,游戏结束时左上角为总得分. 运行结果: 界面和css代码这里就不加赘述了,主要贴js代码(加了注释): var config = { width: 20, //一个格子的宽度 height: 20, //一个格子的高度 tr: 30, //行数 td: 30 //列数 } var snake = null, //Snake的实例 food = null, //Food的实

  • 原生JS实现飞机大战小游戏

    本文实例为大家分享了JS实现飞机大战小游戏的具体代码,供大家参考,具体内容如下 <html> <head> <title> 飞机大战 </title> <style type="text/css"> *{margin:0;padding:0;font-family:"Microsoft yahei"} body{overflow:hidden;;} </style> </head>

随机推荐