在好例子网,分享、交流、成长!
您当前所在位置:首页js 开发实例Ajax框架/RIA → jquery 九宫格拼图游戏源码

jquery 九宫格拼图游戏源码

Ajax框架/RIA

下载此实例
  • 开发语言:js
  • 实例大小:8.03KB
  • 下载次数:14
  • 浏览次数:790
  • 发布时间:2019-02-07
  • 实例类别:Ajax框架/RIA
  • 发 布 人:crazycode
  • 文件格式:.html
  • 所需积分:2
 相关标签: jQuery 游戏 拼图 九宫格 源码

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>拼图</title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
                box-sizing: content-box;
            }
            .wrap{
                width: 1000px;
                height: 800px;
                background: #EDEDED;
            }
            #Img{
                width: 320px;
                height: 320px;
                margin: 0 auto;                                
            }
            #Img li{
                list-style: none;
                width: 100px;
                height: 100px;
                float: left;
                border: 1px solid #F6F6F6;
                margin: 1px;    
                cursor: pointer;
                background-image: url(https://img01.haolizi.net/2019/02/07/fd/0/8/fd0879b92c88d56b149454bb3f77086c.png);            
                background-size:  300px 300px;
                background-repeat: no-repeat;
                position: relative;
            }
            
            .start{
                text-align: center;
            }
        </style>
    </head>
    <body>
        <div class="wrap">
            <div id="Img">
                <ul>
                    
                </ul>
            </div>
            <div class="start">
                <select name="" id="select">
                    <option value="3">3*3</option>
                    <option value="4">4*4</option>
                </select>
                <button type="button" id="begin">开始</button>
            </div>
        </div>
        
        
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        <script type="text/javascript">
        
            var group = 3,         //分为几组进行排列
                ul = $("#Img ul"),
                sequence = [],
                ImgList = [],
                imgLens,
                steps;
            
            var Puzzle = {
                initImgOrder : function(){   //正常顺序的图片
                    imgLens = Math.pow(group,2);
                    sequence = [];
                    ul.empty();
                    var size = group * 100  "px";
                    for (var i = 0; i < imgLens; i  ) {                        
                        var y = -((i / group) >>> 0), x = -i % group;
                        ImgList[i 1] = [x,y];
                        var li = '<li style="background-position: ' x*100 'px ' y*100 'px;"></li>';
                        ul.append(li);                        
                        sequence.push(i 1);
                    }
                    $("#Img li").css({"backgroundSize":size " " size});
                },
                showRandomImg: function(newArr){
                    ul.empty();
                    var size = group * 100  "px";
                    for (var i in newArr) {                        
                        var item = newArr[i],
                            x = ImgList[item][0],
                            y = ImgList[item][1];
                        var li = '<li data-index="' item '" style="background-position: ' x*100 'px ' y*100 'px;" ></li>';
                        ul.append(li);
                    }
                    ul.append('<li id="block" data-index="' imgLens '" style="background-image: none;background-color: #fff;"></li>'); //加上空白格
                    $("#Img li").css({"backgroundSize":size " " size});
                },
                imgMove: function(e){
                    var allLi = ul.find("li"),
                        x = allLi.index($(e))   1,                    
                        z = allLi.index($("#block"))   1;
                    
            
                    if(x - 1 == z && (x-1) % group != 0){ //如果空白格在左边
                        $(e).after($("#block"));        
                        steps  ;
                    }
                    if(x   1 == z && (x 1) % group != 1){ //如果空白格在右边
                        $("#block").after($(e));
                        steps  ;
                    }
                    if(x   group == z && (x group) < imgLens 1){ //如果空白格在下边    
                        var p = $("#block").prev();
                        $(e).next().before($("#block"));
                        p.after($(e));
                        steps  ;
                    }
                    if(x - group == z && (x-group) > 0){ //如果空白格在上边
                        var p = $("#block").next();
                        $(e).prev().after($("#block"));
                        p.before($(e));        
                        steps  ;
                    }
                    
                    
                    Puzzle.isGameOver();
                },
                isGameOver: function(){   //游戏是否结束
                    var allLi = ul.find("li"),
                        count = 0;
                    for (var i = 0; i < imgLens; i  ) {
                        var idx = allLi.eq(i).data().index;
                
                        if (idx == (i   1)) {
                            count  ;
                        }
                    }
                     
                    if(count == imgLens){
                        alert('u are win! ' steps ' steps in use');
                        Puzzle.initImgOrder();
                        $(".start").show();
                    }
                },
                randomImgOrder: function(arr){  //随机打乱图片
                    
                    arr.sort(function () {
                        return 0.5 - Math.random();
                    });
                    var num = Puzzle.reverseCount(arr);
                    /** 检测打乱后是否可解 */
                    if (num % 2 != 0) {
                        /** 不可解,通过调换倒数第二个第三个数值,改变逆序数的奇偶性 */
                        var len = arr.length,
                        t = arr[len-2];
                        arr[len-2] = arr[len-3];
                        arr[len-3] = t;

                    }
                    console.log(arr)
                    return arr;
                    
                },
                reverseCount: function(arr){  //计算逆序数
                    var reverseAmount = 0;

                    for (var i = 0; i < imgLens-1; i  ) {
                        var current = arr[i];
                
                        for (var j = i   1; j < imgLens-1; j  ) {
                            var compared = arr[j];
                
                            if (compared < current) {
                                reverseAmount  ;
                            }
                        }
                    }
                    
                    return reverseAmount;
                }
            }
            
            
            Puzzle.initImgOrder();
            
            
            $("#select").on('change',function(){
                var val = $(this).val();
                if(val == "3"){
                    group = 3;
                    $("#Img").css({"width":"320px","height":"320px"});
                    Puzzle.initImgOrder();
                }else{
                    group = 4;
                    $("#Img").css({"width":"440px","height":"440px"});                    
                    Puzzle.initImgOrder();
                }
            });
                    
            $("#begin").on('click',function(){
                $(".start").hide();
                sequence.splice(imgLens-1, 1); //除开一个空白格
                var randArr = Puzzle.randomImgOrder(sequence);
                Puzzle.showRandomImg(randArr);
                steps = 0;
            });
            ul.on('click','li',function(){
                Puzzle.imgMove(this);
            });
        </script>
    </body>
</html>

实例下载地址

jquery 九宫格拼图游戏源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警