限时优惠活动
亲爱的苦力吧用户,我们为了回馈新老用户一直以来的鼎力支持,即日起(2025-02-06至2025-03-06)凡是购买苦力吧VIP/充值K币的新老用户,都直接可获得买一送一的优惠馈赠。例如:购买一个月的VIP会员可直接获得两个月的VIP会员;充值100K币可直接获得200K币,以此类推!有任何疑问可联系在线客服,感谢各位用户对苦力吧素材的信任与厚爱,我们将一如既往的给大家上新更多优质的素材源码,祝大家开工大吉、工作顺利、心想事成。

jquery数字华容道小游戏代码

所属分类: 网页特效-抽奖&游戏    2024-10-23 08:09:06

jquery数字华容道小游戏代码 ie兼容6
 查看演示  登录后下载 温馨提示
登录会员即可享受免费下载
 我要建站

jquery数字华容道小游戏代码(共4个文件)

    • kuli8.js
    • kuli8.css
    • jquery-1.7.1.js
    • index.html

使用方法

  • code
  • source
  1. function kuli8(elem, btn) {
  2. // 先把自己用变量储存起来,后面要用
  3. var myself = this;
  4. // if (!window.layer)
  5. // throw new Error('kuli8 need layer.js');
  6. var $elem = $(elem), $startBtn = $(btn);
  7. $elem.addClass('layui-row layui-col-space1 box');
  8. var noNum = 'no-num', defRadix = 3, isStop = true;
  9. //1.先默认显示1-8类数字,以示规则:
  10. myself.init = function(radix) {
  11. radix = getRadix(radix);
  12. for (var i = 1; i < radix * radix; i++) {
  13. $elem.append('<div class="layui-col-xs1 box-item" ' + getItemStyle(radix) + '><div>' + i + '</div></div>');
  14. }
  15. $elem.append('<div class="layui-col-xs1 box-item no-num" ' + getItemStyle(radix) + '><div></div></div>');
  16. $elem.after('<audio src="./mp3/fall.mp3"></audio>');
  17. // 添加事件:
  18. addEventListener(radix);
  19. }
  20. // 2.重新、开始游戏
  21. myself.restart = function(radix) {
  22. radix = getRadix(radix);
  23. var array = getTempArray(radix);
  24. $elem.html('');
  25. $.each(array, function(i, number) {
  26. $elem.append('<div class="layui-col-xs1 box-item" ' + getItemStyle(radix) + '><div>' + number + '</div></div>');
  27. });
  28. $elem.append('<div class="layui-col-xs1 box-item no-num" ' + getItemStyle(radix) + '><div></div></div>');
  29. if (checkGameOver(false))
  30. return myself.restart(radix);
  31. isStop = false;
  32. // 添加事件:
  33. addEventListener(radix);
  34. }
  35. /**
  36. * @see 数列的逆序数为偶数
  37. * @see 数字华容道,必然有解,只存在于如下3个细分情形:
  38. * @see 若格子列数为奇数,则逆序数必须为偶数;
  39. * @see 若格子列数为偶数,且逆序数为偶数,则当前空格所在行数与初始空格所在行数的差为偶数;
  40. * @see 若格子列数为偶数,且逆序数为奇数,则当前空格所在行数与初始空格所在行数的差为奇数。
  41. */
  42. function getTempArray(radix) {
  43. var array = [];
  44. for (var i = 1; i < radix * radix; i++)
  45. array.push(i);
  46. array.sort(function() {
  47. return Math.random() - 0.5;
  48. });
  49. if (!canUse(array))
  50. return getTempArray(radix);
  51. return array;
  52. }
  53. // 判断生成的数组是否符合规则
  54. function canUse(numbers) {
  55. // 声明标识逆序数的个数
  56. var ivsNumber = 0;
  57. // 遍历数组
  58. for (var i = 0; i < numbers.length; i++) {
  59. for (var j = i + 1; j < numbers.length; j++) {
  60. // 依次两两对比,判断前一个是否比后一个大
  61. if (numbers[i] > numbers[j]) {
  62. // 是,则ivsNumber加1
  63. ivsNumber++;
  64. }
  65. }
  66. }
  67. // 判断ivsNumber变量是否为偶数
  68. return (ivsNumber % 2 == 0);
  69. }
  70. function getRadix(radix) {
  71. radix = !radix || isNaN(radix) ? defRadix : parseInt(radix);
  72. return defRadix = Math.max(Math.min(radix, 30), 3);
  73. }
  74. function getItemStyle(radix) {
  75. var w = chuyu(300, radix), fs = [0, 100, 80, 60, 40, 30, 30, 24, 20, 18, 16, 14, 12, 10, 10][radix];
  76. return 'style="width:' + w + 'px;height:' + w + 'px;line-height:' + w + 'px;font-size:' + (fs || 10) + 'px;"';
  77. }
  78. function msg(msg, isAlert) {
  79. if (window.layer)
  80. return isAlert ? layer.alert(msg) : layer.msg(msg);
  81. return alert(msg);
  82. }
  83. function addEventListener(radix) {
  84. $elem.find('.box-item').click(function() {
  85. if (isStop) return msg('请先点击开始游戏!');
  86. var $me = $(this);
  87. if ($me.hasClass(noNum)) return;//点击了空!
  88. var html = $me.html();
  89. var index = $elem.find('.box-item').index(this) + 1;
  90. var bln, check = function($target) {
  91. if ($target.length > 0 && $target.hasClass(noNum)) {
  92. $me.html($target.html()).addClass(noNum);
  93. $target.html(html).removeClass(noNum);
  94. return true;
  95. }
  96. return false;
  97. };
  98. //上
  99. if (!bln && index - radix > 0) {
  100. bln = check($elem.find('.box-item:eq(' + (index - radix - 1) + ')'));
  101. }
  102. //下
  103. if (!bln) {
  104. bln = check($elem.find('.box-item:eq(' + (index + radix - 1) + ')'));
  105. }
  106. //左
  107. if (!bln && index % radix != 1) {
  108. bln = check($me.prev());
  109. }
  110. //右
  111. if (!bln && index % radix != 0) {
  112. bln = check($me.next());
  113. }
  114. if (bln) {
  115. checkGameOver(bln);
  116. $elem.next('audio')[0].play();
  117. }
  118. });
  119. if ($startBtn.length > 0)
  120. $startBtn.text(isStop ? '开始游戏' : '重新开始');
  121. }
  122. function checkGameOver(isTips) {
  123. var isOver = true;
  124. $elem.find('.box-item').each(function(index, item) {
  125. var $me = $(item), text = $me.text();
  126. if (!text || $me.hasClass(noNum)) return;//空!
  127. if (index + 1 != text)
  128. return isOver = false;
  129. });
  130. if (isOver && isTips) {
  131. isStop = true;
  132. msg('恭喜您,游戏通关!', true);
  133. if ($startBtn.length > 0)
  134. $startBtn.text('重新开始');
  135. }
  136. return isOver;
  137. }
  138. function chuyu(m, n) {
  139. return n == 0 ? 0 : m / n;
  140. }
  141. return myself.init();
  142. }
function kuli8(elem, btn) {
    // 先把自己用变量储存起来,后面要用
    var myself = this;

    //    if (!window.layer)
    //        throw new Error('kuli8 need layer.js');

    var $elem = $(elem), $startBtn = $(btn);
    $elem.addClass('layui-row layui-col-space1 box');
    var noNum = 'no-num', defRadix = 3, isStop = true;

    //1.先默认显示1-8类数字,以示规则:
    myself.init = function(radix) {
        radix = getRadix(radix);
        for (var i = 1; i < radix * radix; i++) {
            $elem.append('<div class="layui-col-xs1 box-item" ' + getItemStyle(radix) + '><div>' + i + '</div></div>');
        }
        $elem.append('<div class="layui-col-xs1 box-item no-num" ' + getItemStyle(radix) + '><div></div></div>');
        $elem.after('<audio src="./mp3/fall.mp3"></audio>');

        // 添加事件:
        addEventListener(radix);
    }

    // 2.重新、开始游戏
    myself.restart = function(radix) {
        radix = getRadix(radix);
        var array = getTempArray(radix);
        $elem.html('');
        $.each(array, function(i, number) {
            $elem.append('<div class="layui-col-xs1 box-item" ' + getItemStyle(radix) + '><div>' + number + '</div></div>');
        });
        $elem.append('<div class="layui-col-xs1 box-item no-num" ' + getItemStyle(radix) + '><div></div></div>');

        if (checkGameOver(false))
            return myself.restart(radix);
        isStop = false;
        // 添加事件:
        addEventListener(radix);
    }
    
    /**
     * @see 数列的逆序数为偶数
     * @see 数字华容道,必然有解,只存在于如下3个细分情形:
     * @see 若格子列数为奇数,则逆序数必须为偶数;
     * @see 若格子列数为偶数,且逆序数为偶数,则当前空格所在行数与初始空格所在行数的差为偶数;
     * @see 若格子列数为偶数,且逆序数为奇数,则当前空格所在行数与初始空格所在行数的差为奇数。
     */
    function getTempArray(radix) {
        var array = [];
        for (var i = 1; i < radix * radix; i++)
            array.push(i);
        array.sort(function() {
            return Math.random() - 0.5;
        });
        if (!canUse(array))
            return getTempArray(radix);
        return array;
    }

    // 判断生成的数组是否符合规则
    function canUse(numbers) {
        // 声明标识逆序数的个数
        var ivsNumber = 0;
        // 遍历数组
        for (var i = 0; i < numbers.length; i++) {
            for (var j = i + 1; j < numbers.length; j++) {
                // 依次两两对比,判断前一个是否比后一个大
                if (numbers[i] > numbers[j]) {
                    // 是,则ivsNumber加1
                    ivsNumber++;
                }
            }
        }
        // 判断ivsNumber变量是否为偶数
        return (ivsNumber % 2 == 0);
    }

    function getRadix(radix) {
        radix = !radix || isNaN(radix) ? defRadix : parseInt(radix);
        return defRadix = Math.max(Math.min(radix, 30), 3);
    }

    function getItemStyle(radix) {
        var w = chuyu(300, radix), fs = [0, 100, 80, 60, 40, 30, 30, 24, 20, 18, 16, 14, 12, 10, 10][radix];
        return 'style="width:' + w + 'px;height:' + w + 'px;line-height:' + w + 'px;font-size:' + (fs || 10) + 'px;"';
    }

    function msg(msg, isAlert) {
        if (window.layer)
            return isAlert ? layer.alert(msg) : layer.msg(msg);
        return alert(msg);
    }

    function addEventListener(radix) {
        $elem.find('.box-item').click(function() {
            if (isStop) return msg('请先点击开始游戏!');
            var $me = $(this);
            if ($me.hasClass(noNum)) return;//点击了空!
            var html = $me.html();
            var index = $elem.find('.box-item').index(this) + 1;
            var bln, check = function($target) {
                if ($target.length > 0 && $target.hasClass(noNum)) {
                    $me.html($target.html()).addClass(noNum);
                    $target.html(html).removeClass(noNum);
                    return true;
                }
                return false;
            };

            //上
            if (!bln && index - radix > 0) {
                bln = check($elem.find('.box-item:eq(' + (index - radix - 1) + ')'));
            }
            //下
            if (!bln) {
                bln = check($elem.find('.box-item:eq(' + (index + radix - 1) + ')'));
            }
            //左
            if (!bln && index % radix != 1) {
                bln = check($me.prev());
            }
            //右
            if (!bln && index % radix != 0) {
                bln = check($me.next());
            }
            if (bln) {
                checkGameOver(bln);

                $elem.next('audio')[0].play();
            }
        });

        if ($startBtn.length > 0)
            $startBtn.text(isStop ? '开始游戏' : '重新开始');
    }

    function checkGameOver(isTips) {
        var isOver = true;
        $elem.find('.box-item').each(function(index, item) {
            var $me = $(item), text = $me.text();
            if (!text || $me.hasClass(noNum)) return;//空!
            if (index + 1 != text)
                return isOver = false;
        });
        if (isOver && isTips) {
            isStop = true;
            msg('恭喜您,游戏通关!', true);
            if ($startBtn.length > 0)
                $startBtn.text('重新开始');
        }
        return isOver;
    }

    function chuyu(m, n) {
        return n == 0 ? 0 : m / n;
    }

    return myself.init();
}

站长提示:
1. 苦力吧素材官方QQ群:950875342
2. 平台上所有素材资源,需注册登录会员方能正常下载。
3. 会员用户积极反馈网站、素材资源BUG或错误问题,每次奖励2K币
4. PHP源码类素材,如需协助安装调试,或你有二次开发需求,可联系苦力吧客服。
5. 付费素材资源,需充值后方能下载,如有任何疑问可直接联系苦力吧客服
相关资源 / 抽奖&游戏

html5野狼捕杀兔子小游戏源码

一款有趣的野狼猎食兔子的小游戏代码,兔子在前野狼在后追赶,点击屏幕或点击鼠标,使得兔子快速奔跑、跳跃,逃避野狼追捕,带剧情背景音乐、积分功能。
  抽奖&游戏
 7225  0

jquery创建的九宫格游戏源码

这款游戏类似于常见的五子棋,也是大家熟知的圈圈叉叉双人游戏,也叫井字棋游戏。
  抽奖&游戏
 6344  0

原生js canvas弹珠打砖块小游戏源码

一款带积分等级的弹珠打砖块小游戏源码,canvas画布绘制,很有趣的网页小游戏。
  抽奖&游戏
 2517  0

html5小游戏自动推箱子

一款原生js编写的智能推箱子小游戏,支持开启机器人推箱子,也可以手动推箱子。
  抽奖&游戏
 9224  0

评论数(0) 回复有机会获得K币 用户协议

^_^ 还没有人评论,快来抢个沙发!
😀
  • 😀
  • 😊
  • 😂
  • 😍
  • 😑
  • 😷
  • 😵
  • 😛
  • 😣
  • 😱
  • 😋
  • 😎
  • 😵
  • 😕
  • 😶
  • 😚
  • 😜
  • 😭
发表评论