基本信息
源码名称:html5 消消乐demo小游戏
源码大小:0.02M
文件格式:.html
开发语言:js
更新时间:2019-01-07
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 3 元 
   源码介绍
JavaScript基础消消乐小游戏


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;

        }

        .home {
            width: 880px;
            height: 800px;
            background: rgba(0, 38, 255, 0.2);
            margin: 50px auto;
            position: relative;
            font-size: 0px;
            border-radius: 5px;
            border: 10px solid rgba(0, 0, 0, 0);
            overflow: hidden;
        }

        .happyElms,
        .fixedElms {
            width: 80px;
            height: 80px;
            border: 0px solid #555;
            box-sizing: border-box;
            background: url('http://m.qpic.cn/psb?/V14bAT0n0crOhQ/Dx46HaFb2vN*wlmA8ahZHrARMM5XN1FxOVMfKBwA*fY!/b/dDIBAAAAAAAA&bo=fgc*AX4HPwEDORw!&rf=viewer_4') no-repeat;
            background-position: 0px 0px;
            background-size: 600%;
            position: absolute;
            border-radius: 5px;
            transition: all 0.3s;
            filter: contrast(150%) saturate(150%) blur(0);

        }

        .happyElms:hover,
        .fixedElms:hover {
            background: url('http://m.qpic.cn/psb?/V14bAT0n0crOhQ/B7AhaRiLR6CoFm64lKnGz79h**eXsDZG7BJrJqzqI30!/b/dC8BAAAAAAAA&bo=fgc*AX4HPwEDCSw!&rf=viewer_4') no-repeat;
            background-size: 600%;
            box-shadow: 0px 0px 15px white inset;
            /*opacity: 0;
             transform: scale(0.5) */
        }

        .bg {
            position: relative;
            width: 76px;
            height: 76px;
            background: linear-gradient(#182748, #182748);
            opacity: 0.8;
            margin: 1px;
            overflow: hidden;
            border: 1px solid rgba(13, 49, 99, 0.6);
            display: inline-block;
            border-radius: 5px;
            filter: contrast(150%) saturate(120%);

        }

        .room {
            display: inline-block;
            width: 80px;
            height: 100%;
            border: 0px solid rgba(13, 49, 99, 0.6);
            background: rgba(255, 255, 255, 0.2);
            font-size: 0px;
        }

        .bg::before {
            content: '';
            display: block;
            background: linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0));
            width: 110%;
            height: 10%;
        }

        body {
            background: url('http://m.qpic.cn/psb?/V14bAT0n0crOhQ/gRDfGCvVRPZgj.YYeCpr4nrm*SqzKx.D8gL.g5t4ixQ!/b/dFIBAAAAAAAA&bo=gAc4BIAHOAQRGS4!&rf=viewer_4') no-repeat;
        }

        .count {
            position: absolute;
            right: 100px;
            top: 100px;
            width: 350px;
            height: 100px;

            font-size: 20px;
            text-align: center;
            color: #fff;
        }

        .count p {
            display: inline-block;
            background: rgba(255, 255, 255, 0.5);
            border-radius: 50px;
            border: 1px solid rgba(255, 255, 255, 0.8);
            height: 50px;
            width: 200px;
            margin: 10px;
            font-size: 35px;
            line-height: 50px;
            overflow: hidden;
            position: relative;
            cursor: pointer;

        }

        .count p::after {
            content: '';
            display: block;
            position: absolute;
            width: 100%;
            height: 20px;
            background: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0));
            top: 0px;

        }
    </style>
</head>

<body>
    <div class="home">
        <div class="count">总得分<br>
            <p>0</p>
        </div>
        <div class="room">
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
        </div>
        <div class="room">
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
        </div>
        <div class="room">
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
        </div>
        <div class="room">
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
            <div class="bg"></div>
        </div>
        <!-- <div class="room"></div>
        <div class="room"></div>
        <div class="room"></div>
        <div class="room"></div>
        <div class="room"></div>
        <div class="room"></div> -->
    </div>
    <script>
        var room = document.getElementsByClassName('room')
        var gameArr = []
        for (var i = 0; i < room.length; i  ) {
            gameArr.push([])
        }
        var happyEL = {//原对象
            taget: document.getElementsByClassName('home')[0],
            fixed: document.getElementsByClassName('fixedElms'),
            move: document.getElementsByClassName('happyElms'),
            top: 1,
            left: 0,
            speed: 80,
            boor: true,
            id: 0,
            class: 6
        }
        function HappyEL(happyEL, s) {//构造元素属性
            this.happy = document.createElement('div')
            this.taget = happyEL.taget
            this.taget.appendChild(this.happy)
            this.happy.className = 'happyElms'
            this.left = happyEL.left
            this.speed = happyEL.speed
            this.happy.style.top = -happyEL.top * 80   'px'
            this.happy.style.left = happyEL.left * this.speed   'px'
            this.fixed = happyEL.fixed
            this.boor = happyEL.boor
            this.id = happyEL.id
            this.class = happyEL.class
            this.randcolor = Math.floor(Math.random() * this.class)
            this.move = happyEL.move
            this.happy.style.backgroundPosition = -this.randcolor * this.speed   'px '   '0px'
            this.shine = function () {
                this.happy.style.boxShadow = '0px 0px 15px white inset'
            }
            this.loseShine = function () {
                this.happy.style.boxShadow = null
            }
            this.remo = function () {
                this.happy.style.transform = 'scale(0.5)'
                this.happy.style.opacity = 0
            }
            this.dest = function () {
                if (this.happy && this.taget) {
                    try {
                        this.taget.removeChild(this.happy)
                    } catch (e) {

                    }

                }
            }
        }
        var timer
        var cont = 0
        function Timer() { //入口,从这开始
            // var col = gameArr.length % gameArr.length
            // timer = setInterval(function () {
            //     col %= gameArr.length
            //     if (cont >= 40) {
            //         clearInterval(timer)
            //     } else {
            //         work(col)
            //         col  
            //         cont  
            //     }
            // }, 50)
            for (var i = 0; i < gameArr.length; i  ) {
                for (var j = 0; j < 10; j  ) {
                    work(i, j)
                }
            }
        }
        Timer()

        var count = 0
        var pCount = document.getElementsByTagName('p')[0]
        function work(x, y) {//创建元素工厂
            happyEL.left = x
            var createElms = new HappyEL(happyEL)
            happyEL.id  
            createElms.maxTop = y
            createElms.remove = function (n) {//绑定事件
                if (createElms.boor) {
                    createElms.boor = false
                    createElms.remo()
                    count  
                    pCount.innerText = count
                    createElms.happy.addEventListener('transitionend', function () {
                        setTimeout(function () {
                            createElms.dest()
                            removeArr(createElms.id)
                        }, 100 * n)
                    })
                }

            }
            createElms.happy.onclick = function () {//单击事件
                createElms.shine()
                exchangeElns(createElms)
            }
            gameArr[x].push([createElms, createElms.randcolor, createElms.id])
            var timer = setInterval(function () {
                elmsBor(createElms, timer)
            }, 80)
        }

        function retSpeed() {//为每个元素的移动速度调整为80
            for (var i = 0; i < gameArr.length; i  ) {
                for (var j = gameArr[i].length - 1; j >= 0; j--) {
                    gameArr[i][j][0].maxTop = j
                    gameArr[i][j][0].speed = 80
                }
            }
        }

        function removeArr(n) {//移除数组中对应的值,并new一个数组出来
            for (var i = 0; i < gameArr.length; i  ) {
                for (var j = gameArr[i].length - 1; j >= 0; j--) {
                    if (gameArr[i][j][2] == n) {
                        gameArr[i].splice(j, 1)
                        console.log(j)
                        work(i,j)
                        break
                    }
                }
            }
        }
        function elmsBor(elms) {//元素的移动,判断位置
            if (parseInt(elms.happy.style.top)   elms.speed >= 800 - elms.maxTop * 80) {
                elms.speed = 0
                elms.happy.className = 'fixedElms'
            } else {
                elms.happy.style.top = parseInt(elms.happy.style.top)   elms.speed   'px'
            }
            //     var fixed = elms.fixed
            //     var move = elms.move
            //     var x = parseInt(elms.happy.style.left)
            //     var y = parseInt(elms.happy.style.top)
            //     var boor = false
            //     for (var i = 0; i < fixed.length; i  ) {
            //         if (x == parseInt(fixed[i].style.left) && y   elms.speed == parseInt(fixed[i].style.top)) {
            //             elms.speed = 0
            //             elms.happy.className = 'fixedElms'
            //             break
            //         } else if (move[i] && cont >= 40) {
            //             if (x == parseInt(move[i].style.left) && y == parseInt(move[i].style.top)) {
            //                 // elms.speed = 0
            //             }
            //         }
            //     }
            //     if (boor == false) {
            //         elms.happy.style.top = parseInt(elms.happy.style.top)   elms.speed   'px'
            //     }
            // }
        }
        var tempArr = []
        function exchangeElns(elms) {//元素显示交换
            if (tempArr.length < 1) {
                tempArr.push(elms)
            } else {
                tempArr.push(elms)

                var id = tempArr[0].id//交换标识
                var x = parseInt(tempArr[0].happy.style.left)
                var y = parseInt(tempArr[0].happy.style.top)

                var id_1 = tempArr[1].id//交换标识
                var x1 = parseInt(tempArr[1].happy.style.left)
                var y1 = parseInt(tempArr[1].happy.style.top)

                if (x == x1 && y   80 == y1 || x == x1 && y - 80 == y1 || x   80 == x1 && y == y1 || x - 80 == x1 && y == y1) {
                    tempArr[0].happy.style.left = x1   'px'
                    tempArr[0].happy.style.top = y1   'px'
                    tempArr[1].happy.style.left = x   'px'
                    tempArr[1].happy.style.top = y   'px'
                    changeArr(id, id_1)
                    tempArr[0].loseShine()
                    tempArr[1].loseShine()
                    tempArr = []
                } else {
                    tempArr[0].loseShine()
                    tempArr[1].loseShine()
                    tempArr = []
                }
            }
        }
        function changeArr(n, n_1) {//元素隐式交换
            var first
            var first_n = []
            var second
            var second_n = []
            for (var i = gameArr.length - 1; i >= 0; i--) {
                for (var j = 0; j < gameArr[i].length; j  ) {
                    if (gameArr[i][j][2] == n) {
                        first = gameArr[i].splice(j, 1, '')
                        first_n.push(i, j)
                    } else if (gameArr[i][j][2] == n_1) {
                        second = gameArr[i].splice(j, 1, '')
                        second_n.push(i, j)
                    }
                }
            }
            gameArr[second_n[0]][second_n[1]] = first[0]
            gameArr[first_n[0]][first_n[1]] = second[0]
        }

        function removeElms() {//消除匹配到的元素 匹配元素 1好位置
            for (var i = 0; i < gameArr.length; i  ) {
                for (var j = gameArr[i].length - 1; j >= 0; j--) {
                    //纵向匹配
                    if (seekPortElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)) {
                        if (matchElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)) {
                            deleteElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
                            continue
                        }
                    }
                    if (seekPortElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6, 7, 8)) {
                        if (matchElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6, 7, 8)) {
                            deleteElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6, 7, 8)
                            continue
                        }
                    }
                    if (seekPortElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6, 7)) {
                        if (matchElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6, 7)) {
                            deleteElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6, 7)
                            continue
                        }
                    }
                    if (seekPortElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6)) {
                        if (matchElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6)) {
                            deleteElms(gameArr, i, j, 0, 1, 2, 3, 4, 5, 6)
                            continue
                        }
                    }
                    if (seekPortElms(gameArr, i, j, 0, 1, 2, 3, 4, 5)) {
                        if (matchElms(gameArr, i, j, 0, 1, 2, 3, 4, 5)) {

                            deleteElms(gameArr, i, j, 0, 1, 2, 3, 4, 5)
                            continue

                        }
                    }
                    if (seekPortElms(gameArr, i, j, 0, 1, 2, 3, 4)) {
                        if (matchElms(gameArr, i, j, 0, 1, 2, 3, 4)) {
                            deleteElms(gameArr, i, j, 0, 1, 2, 3, 4)
                            continue
                        }
                    }
                    if (seekPortElms(gameArr, i, j, 0, 1, 2, 3)) {
                        if (matchElms(gameArr, i, j, 0, 1, 2, 3)) {
                            deleteElms(gameArr, i, j, 0, 1, 2, 3)
                            continue
                        }
                    }
                    if (seekPortElms(gameArr, i, j, 0, 1, 2)) {
                        if (matchElms(gameArr, i, j, 0, 1, 2)) {
                            deleteElms(gameArr, i, j, 0, 1, 2)
                            continue
                        }
                    }
                    //横向匹配
                    if (seekTranElms(gameArr, i, 0, 1, 2, 3)) {
                        if (matchElms_tran(gameArr, i, j, 0, 1, 2, 3)) {
                            deleteElms_tran(gameArr, i, j, 0, 1, 2, 3)
                            continue
                        }
                    }
                    if (seekTranElms(gameArr, i, 0, 1, 2)) {
                        if (matchElms_tran(gameArr, i, j, 0, 1, 2)) {
                            deleteElms_tran(gameArr, i, j, 0, 1, 2)
                            continue
                        }
                    }
                }
            }
        }
        setInterval(function () {
            retSpeed()

            if (gameArr.length >= 4 && gameArr[0].length >= 10 && gameArr[1].length >= 10 && gameArr[2].length >= 10 && gameArr[3].length >= 10) {
                removeElms()
            }
        }, 50)
        //寻找纵向元素seekPortElms(gameArr,i,j,1,2)
        function seekPortElms() {
            var taget = arguments[0][arguments[1]]
            var boor = true
            for (var n = 3; n < arguments.length; n  ) {
                if (typeof (taget[arguments[2]   arguments[n]]) == 'undefined') {
                    boor = false
                    break
                }
            }
            return boor
        }
        function matchElms() {//纵向匹配
            var target = arguments[0][arguments[1]][arguments[2]][1]
            var matchTarget = arguments[0][arguments[1]]
            var boor = true
            for (var n = 3; n < arguments.length; n  ) {
                if (target != matchTarget[arguments[2]   arguments[n]][1]) {
                    boor = false
                    break
                }
            }
            return boor
        }
        function deleteElms() {//清除销毁纵向元素
            //arguments[0][arguments[1]][arguments[2]][0].remove(arguments[arguments.length-1])
            for (var n = arguments.length - 1; n >= 3; n--) {
                arguments[0][arguments[1]][arguments[2]   arguments[n]][0].remove(arguments[n])
            }
        }
        //寻找横向元素seekTranElms(gameArr,i,1,2)
        function seekTranElms() {//寻找横向元素
            var taget = arguments[0]
            var boor = true
            for (var n = 2; n < arguments.length; n  ) {
                if (typeof (taget[arguments[1]   arguments[n]]) == 'undefined') {
                    boor = false
                    break
                }
            }
            return boor
        }
        function matchElms_tran() {//横向向匹配
            var target = arguments[0][arguments[1]][arguments[2]][1]
            //var matchTarget = arguments[0][arguments[1]]
            var boor = true
            for (var n = 3; n < arguments.length; n  ) {
                if (target != arguments[0][arguments[1]   arguments[n]][arguments[2]][1]) {
                    boor = false
                    break
                }
            }
            return boor
        }
        function deleteElms_tran() {//清除销毁横向元素
            // arguments[0][arguments[1]][arguments[2]][0].remove(0)
            for (var n = 3; n < arguments.length; n  ) {
                arguments[0][arguments[1]   arguments[n]][arguments[2]][0].remove(arguments[n])
            }
        }
    </script>
</body>

</html>