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

jquery支持难度选择的拼图小游戏代码

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

jquery支持难度选择的拼图小游戏代码 ie兼容6
 查看演示  登录后下载 温馨提示
登录会员即可享受免费下载
 我要建站

jquery支持难度选择的拼图小游戏代码(共6个文件)

    • index.css
    • index.js
    • jquery-1.10.2.js
    • index.html
    • afe.jpg

使用方法

  • code
  • source
  1. var list = $('.picBox .list');
  2. var listW = list.width();
  3. var listH = list.height();
  4. var imgW = listW / 3;
  5. var imgH = listH / 3;
  6. var origArr = [];
  7. var randArr = [];
  8. var key = true;
  9. var imgCell;
  10. var num = 3;
  11. var seleBox = $('.selectbox');
  12. var seleLi = seleBox.find('li');
  13. var seleBtn = seleBox.find('.text');
  14. init()
  15. function init() {
  16. render(num)
  17. gameState()
  18. select()
  19. }
  20. function render(n) {
  21. list.html('')
  22. imgW = listW / n;
  23. imgH = listH / n;
  24. origArr = [];
  25. for (var i = 0; i < n; i++) {
  26. for (var j = 0; j < n; j++) {
  27. origArr.push(i * n + j);
  28. var li = $('<li>')
  29. li.css({
  30. left: j * imgW + 'px',
  31. top: i * imgH + 'px',
  32. backgroundPosition: -j * imgW + 'px ' + -i * imgH + 'px',
  33. width: imgW + 'px',
  34. height: imgH + 'px'
  35. })
  36. list.append(li)
  37. imgCell = list.find('li')
  38. }
  39. }
  40. } //生成9个li
  41. function select() {
  42. seleBtn.on('click', function () {
  43. $(this).siblings('.box').slideToggle()
  44. seleBox.toggleClass('active');
  45. })
  46. seleLi.on('click', function () {
  47. var index = $(this).index();
  48. var text = $(this).text();
  49. seleBtn.text(text)
  50. seleBox.find('.box').slideUp()
  51. seleBox.removeClass('active')
  52. if(index == seleLi.length-1){
  53. num = 12
  54. return
  55. }else if(index == seleLi.length-2){
  56. num = 8
  57. return
  58. }
  59. num = Math.floor(index*1.5) + 3;
  60. })
  61. }
  62. function gameState() {
  63. $('.btn').on('click', function () {
  64. if (key) {
  65. key = false;
  66. $(this).text('复原')
  67. render(num)
  68. randomArr()
  69. cellOrder(randArr, num)
  70. drag()
  71. seleBtn.attr('disabled','disabled')
  72. $(imgCell).css('cursor','move')
  73. seleBox.find('.box').slideUp()
  74. seleBox.removeClass('active')
  75. } else {
  76. key = true
  77. $(this).text('开始')
  78. cellOrder(origArr,num)
  79. imgCell.off('mousemove mouseup mousedown mouseover mouseout')
  80. seleBtn.attr('disabled',false)
  81. $(imgCell).css('cursor','pointer')
  82. }
  83. })
  84. } //游戏状态改变
  85. function randomArr() {
  86. randArr = [];
  87. var len = origArr.length;
  88. var order;
  89. var temp = {}
  90. for (var i = 0; i < len; i++) {
  91. order = Math.floor(Math.random() * len)
  92. if (randArr.length > 0) {
  93. while ($.inArray(order, randArr) > -1) {
  94. order = Math.floor(Math.random() * len)
  95. }
  96. }
  97. randArr.push(order)
  98. }
  99. return
  100. } //乱序数组
  101. function cellOrder(arr, n) {
  102. var len = arr.length;
  103. for (var a = 0; a < len; a++) {
  104. var j = arr[a] % n;
  105. var i = Math.floor(arr[a] / n);
  106. animateFn(a, j, i,n)
  107. }
  108. } //改变图片位置
  109. function drag() {
  110. var disX, disY
  111. var initL = list.offset().left;
  112. var initT = list.offset().top;
  113. imgCell.on('mousedown', function (e) {
  114. var e = e || window.e;
  115. disX = e.pageX - $(this).offset().left
  116. disY = e.pageY - $(this).offset().top
  117. var self = this
  118. var index1 = $(this).index()
  119. $(document).on('mousemove', function (e) {
  120. e.preventDefault()
  121. var e = e || window.e
  122. var l = e.pageX - disX - initL
  123. var t = e.pageY - disY - initT
  124. $(self).css({
  125. left: l + 'px',
  126. top: t + 'px',
  127. zIndex: 1000,
  128. opacity: '0.6'
  129. })
  130. }).on('mouseup', function (e) {
  131. var e = e || window.e
  132. var l = e.pageX - initL
  133. var t = e.pageY - initT
  134. var index2 = changeIndex(l, t, index1, num)
  135. if (index1 == index2) {
  136. cellReturn(index1, num)
  137. } else {
  138. cellChange(index1, index2, num)
  139. }
  140. $(this).off('mousemove').off('mouseup')
  141. })
  142. }).on('mouseover', function () {
  143. $(this).css({
  144. opacity: '0.8'
  145. })
  146. }).on('mouseout', function () {
  147. $(this).css({
  148. opacity: '1'
  149. })
  150. })
  151. } //拖拽图片
  152. function changeIndex(x, y, index, n) {
  153. if (x < 0 || x > listW || y < 0 || y > listH) {
  154. return index
  155. }
  156. var row = Math.floor(y / imgH);
  157. var col = Math.floor(x / imgW);
  158. var l = row * n + col;
  159. var i = 0; len = randArr.length;
  160. while ((i < len) && (randArr[i] !== l)) {
  161. i++
  162. }
  163. return i;
  164. } //改变index值
  165. function cellReturn(index, n) {
  166. var i = Math.floor(randArr[index] / n);
  167. var j = randArr[index] % n;
  168. animateFn(index, j, i,num)
  169. } //飞回原来位置
  170. function cellChange(from, to,n) {
  171. var fromI = Math.floor(randArr[from] / n);
  172. var fromJ = randArr[from] % n;
  173. var toI = Math.floor(randArr[to] / n);
  174. var toJ = randArr[to] % n;
  175. var temp = randArr[from];
  176. animateFn(from, toJ, toI,num)
  177. animateFn(to, fromJ, fromI,num, function () {
  178. randArr[from] = randArr[to]
  179. randArr[to] = temp
  180. check()
  181. })
  182. } //图片交换位置
  183. function check() {
  184. if (origArr.toString() == randArr.toString()) {
  185. alert('厉害了老铁')
  186. }
  187. } //检查是否正确
  188. function animateFn(index, j, i,n, callBack) {
  189. imgW = listW / n;
  190. imgH = listH / n;
  191. imgCell.eq(index).animate({
  192. left: j * imgW + 'px',
  193. top: i * imgH + 'px'
  194. }, function () {
  195. $(this).css({
  196. zIndex: '0',
  197. opacity: '1'
  198. })
  199. typeof callBack == 'function' ? callBack.call(this, arguments) : ''
  200. })
  201. } //动画执行
var list = $('.picBox .list');
var listW = list.width();
var listH = list.height();
var imgW = listW / 3;
var imgH = listH / 3;
var origArr = [];
var randArr = [];
var key = true;
var imgCell;
var num = 3;
var seleBox = $('.selectbox');
var seleLi = seleBox.find('li');
var seleBtn = seleBox.find('.text');
init()
function init() {
    render(num)
    gameState()
    select()
}


function render(n) {
    list.html('')
    imgW = listW / n;
    imgH = listH / n;
    origArr = [];
    for (var i = 0; i < n; i++) {
        for (var j = 0; j < n; j++) {
            origArr.push(i * n + j);
            var li = $('<li>')
            li.css({
                left: j * imgW + 'px',
                top: i * imgH + 'px',
                backgroundPosition: -j * imgW + 'px ' + -i * imgH + 'px',
                width: imgW + 'px',
                height: imgH + 'px'
            })
            list.append(li)
            imgCell = list.find('li')
        }
    }
} //生成9个li


function select() {
    seleBtn.on('click', function () {
        $(this).siblings('.box').slideToggle()
        seleBox.toggleClass('active');
    })
    seleLi.on('click', function () {
        var index = $(this).index();
        var text = $(this).text();
        seleBtn.text(text)
        seleBox.find('.box').slideUp()
        seleBox.removeClass('active')
        if(index == seleLi.length-1){
            num = 12
            return 
        }else if(index == seleLi.length-2){
            num = 8
            return 
        }
        num = Math.floor(index*1.5) + 3;
    })
}

function gameState() {
    $('.btn').on('click', function () {
        if (key) {
            key = false;
            $(this).text('复原')
            render(num)
            randomArr()
            cellOrder(randArr, num)
            drag()
            seleBtn.attr('disabled','disabled')
            $(imgCell).css('cursor','move')
            seleBox.find('.box').slideUp()
            seleBox.removeClass('active')
        } else {
            key = true
            $(this).text('开始')
            cellOrder(origArr,num)
            imgCell.off('mousemove mouseup mousedown mouseover mouseout')
            seleBtn.attr('disabled',false)
            $(imgCell).css('cursor','pointer')
        }
    })
} //游戏状态改变
function randomArr() {
    randArr = [];
    var len = origArr.length;
    var order;
    var temp = {}
    for (var i = 0; i < len; i++) {
        order = Math.floor(Math.random() * len)
        if (randArr.length > 0) {
            while ($.inArray(order, randArr) > -1) {
                order = Math.floor(Math.random() * len)
            }
        }
        randArr.push(order)
    }
    return
} //乱序数组
function cellOrder(arr, n) {
    var len = arr.length;
    for (var a = 0; a < len; a++) {
        var j = arr[a] % n;
        var i = Math.floor(arr[a] / n);
        animateFn(a, j, i,n)
    }
} //改变图片位置
function drag() {
    var disX, disY
    var initL = list.offset().left;
    var initT = list.offset().top;
    imgCell.on('mousedown', function (e) {
        var e = e || window.e;
        disX = e.pageX - $(this).offset().left
        disY = e.pageY - $(this).offset().top
        var self = this
        var index1 = $(this).index()
        $(document).on('mousemove', function (e) {
            e.preventDefault()
            var e = e || window.e
            var l = e.pageX - disX - initL
            var t = e.pageY - disY - initT
            $(self).css({
                left: l + 'px',
                top: t + 'px',
                zIndex: 1000,
                opacity: '0.6'
            })
        }).on('mouseup', function (e) {
            var e = e || window.e
            var l = e.pageX - initL
            var t = e.pageY - initT
            var index2 = changeIndex(l, t, index1, num)
            if (index1 == index2) {
                cellReturn(index1, num)
            } else {
                cellChange(index1, index2, num)
            }
            $(this).off('mousemove').off('mouseup')
        })
    }).on('mouseover', function () {
        $(this).css({
            opacity: '0.8'
        })
    }).on('mouseout', function () {
        $(this).css({
            opacity: '1'
        })
    })
} //拖拽图片
function changeIndex(x, y, index, n) {
    if (x < 0 || x > listW || y < 0 || y > listH) {
        return index
    }
    var row = Math.floor(y / imgH);
    var col = Math.floor(x / imgW);
    var l = row * n + col;
    var i = 0; len = randArr.length;
    while ((i < len) && (randArr[i] !== l)) {
        i++
    }
    return i;
} //改变index值

function cellReturn(index, n) {
    var i = Math.floor(randArr[index] / n);
    var j = randArr[index] % n;
    animateFn(index, j, i,num)
} //飞回原来位置
function cellChange(from, to,n) {
    var fromI = Math.floor(randArr[from] / n);
    var fromJ = randArr[from] % n;
    var toI = Math.floor(randArr[to] / n);
    var toJ = randArr[to] % n;
    var temp = randArr[from];
    animateFn(from, toJ, toI,num)
    animateFn(to, fromJ, fromI,num, function () {
        randArr[from] = randArr[to]
        randArr[to] = temp
        check()
    })
} //图片交换位置

function check() {
    if (origArr.toString() == randArr.toString()) {
        alert('厉害了老铁')
    }
} //检查是否正确

function animateFn(index, j, i,n, callBack) {
    imgW = listW / n;
    imgH = listH / n;
    imgCell.eq(index).animate({
        left: j * imgW + 'px',
        top: i * imgH + 'px'
    }, function () {
        $(this).css({
            zIndex: '0',
            opacity: '1'
        })
        typeof callBack == 'function' ? callBack.call(this, arguments) : ''
    })
} //动画执行

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

JavaScript实现的英文单词拼字游戏

一款在线英语单词拼写游戏源码,英语单词的字母被随机打乱,用户需要使用这些随机字母找出并输入正确的单词。
  抽奖&游戏
 4230  0

jquery兼容手机端幸运大转盘抽奖特效

jquery兼容手机端幸运大转盘抽奖特效
  抽奖&游戏
 6394  0

jquery红色大转盘代金券红包抽奖特效代码

jquery红色大转盘代金券红包抽奖特效代码
  抽奖&游戏
 8542  0

html5版连连看游戏源码

带积分等级记录,还可以刷新等功能,有能力的大佬可以做二次开发。
  抽奖&游戏
 5457  0

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

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