2048小游戏 没有动画效果

2048小游戏 没有动画效果

代码有冗余懒得改了 一个还好理解

html代码

这是html

 <div class="big">
        <div></div>
        <div></div>
        <div></div>
        <div></div>

        <div></div>
        <div></div>
        <div></div>
        <div></div>

        <div></div>
        <div></div>
        <div></div>
        <div></div>

        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>

css代码

   .big {
            position: relative;
            width: 440px;
            height: 440px;
            margin: auto;
            background: #cecece;
            border: 1px solid #Ff0;
            border-radius: 5px;
        }

        .big div {
            float: left;
            width: 100px;
            height: 100px;
            margin: 5px;
            background: #c0c0c0;
            border-radius: 5px;
        }

        .big li {
            position: absolute;
            width: 100px;
            height: 100px;
            background: #f0f;
            border-radius: 5px;
            line-height: 100px;
            font-size: 20px;
            text-align: center;
        }

js代码

  class Game {
            constructor() {
                this.gameDiv = document.querySelector(".big");
                this.minli_position = [[], [], [], []];
                this.minli = [[], [], [], []];
                this.nullli = [];
                this.init();
                this.play();
                this.userOnKey();
            }
            init() {
                for (let i = 0; i < 4; i++) {
                    for (let j = 0; j < 4; j++) {
                        this.minli_position[i][j] = { X: i * 110 + 5, Y: j * 110 + 5 };
                    }
                }

            }
            play() {
                var num = Math.floor(Math.random() * 0) + 1;
                for (let k = 0; k < num; k++) {
                    var li = document.createElement("li");
                    var linum = (Math.floor(Math.random() * 2) + 1) * 2;

                    this.nullli = [];
                    for (let i = 0; i < 4; i++) {
                        for (let j = 0; j < 4; j++) {
                            if (this.minli[i][j] == undefined) {
                                var str = "" + i + j;
                                this.nullli.push({ name: str, position: this.minli_position[i][j] });
                            }
                        }
                    }
                    if (this.nullli.length == 1) {
                        num = 1;
                    } else if (this.nullli.length == 0) {
                        return;
                    }
                    var position = this.nullli[Math.floor(Math.random() * this.nullli.length)];

                    this.gameDiv.appendChild(li);
                    li.style.left = position.position.X + "px";
                    li.style.top = position.position.Y + "px";
                    li.innerText = linum;
                    this.minli[position.name[0]][position.name[1]] = li;
                }
                this.color();
            }
            color() {
                for (let i = 0; i < 4; i++) {
                    for (let j = 0; j < 4; j++) {

                        var square =this.minli[i][j];
                        console.log(this.minli[i][j]);
                        if (square==undefined) {
                            continue;
                        }
                        switch (square.innerText.trim()) {
                            case "2": square.style.backgroundColor = "#EEE4DA";
                                square.style.color = "#766D64";
                                break;
                            case "4": square.style.backgroundColor = "#ECE0C8";
                                square.style.color = "#786D67";
                                break;
                            case "8": square.style.backgroundColor = "#F2B179";
                                square.style.color = "#F6F7F2";
                                break;
                            case "16": square.style.backgroundColor = "#F59565";
                                square.style.color = "#FAF6F5";
                                break;
                            case "32": square.style.backgroundColor = "#F77B5F";
                                square.style.color = "#FBF3F0";
                                break;
                            case "64": square.style.backgroundColor = "#F35F3B";
                                square.style.color = "#FAF4F4";
                                break;
                            case "128": square.style.backgroundColor = "#EDCE71";
                                square.style.color = "#F8FAF7";
                                break;
                            case "256": square.style.backgroundColor = "#EDCC61";
                                square.style.color = "#FAF6F7";
                                break;
                            case "512": square.style.backgroundColor = "#ECC850";
                                square.style.color = "#FAF4F6";
                                break;
                            case "1024": square.style.backgroundColor = "#EDC53F";
                                square.style.color = "#F9F4FA";
                                break;
                            case "2048": square.style.backgroundColor = "#E9B501";
                                square.style.color = "#FFFCB0";
                                break;
                            case "4096": square.style.backgroundColor = "#FCEDD8";
                                square.style.color = "#524B39";
                                break;
                            default: 
                            square.style.backgroundColor = "#FBEFE3";
                            console.log("/?");
                            break;
                        }
                    }
                }
            }
            userOnKey() {
                window.onkeydown = (e) => {
                    e = e || window.event;
                    var key = e.keyCode || e.which;
                    if (key == 37 || key == 65) {

                        for (let i = 0; i < 4; i++) {
                            for (let j = 0; j < 4; j++) {
                                if (this.minli[j][i] == undefined) {
                                    for (let t = j + 1; t < 4; t++) {
                                        if (this.minli[t][i] != undefined) {
                                            this.minli[t][i].style.left = this.minli_position[j][i].X + "px";
                                            this.minli[j][i] = this.minli[t][i];
                                            this.minli[t][i] = undefined;
                                            break;
                                        }
                                    }
                                }
                                if (this.minli[j][i] != undefined) {
                                    for (let t = j + 1; t < 4; t++) {
                                        if (this.minli[t][i] != undefined) {
                                            if (this.minli[t][i].innerText === this.minli[j][i].innerText) {
                                                this.minli[t][i].style.left = this.minli_position[j][i].X + "px";
                                                this.minli[j][i].innerText = this.minli[j][i].innerText * 2;
                                                this.minli[t][i].remove();
                                                this.minli[t][i] = undefined;
                                            }
                                            break;
                                        }
                                    }
                                }
                            }
                        }





                        this.play();
                    }



                    if (key == 38 || key == 87) {
                        for (let i = 0; i < 4; i++) {
                            for (let j = 0; j < 4; j++) {
                                if (this.minli[i][j] == undefined) {
                                    for (let t = j + 1; t < 4; t++) {
                                        if (this.minli[i][t] != undefined) {
                                            this.minli[i][t].style.top = this.minli_position[i][j].Y + "px";
                                            this.minli[i][j] = this.minli[i][t];
                                            this.minli[i][t] = undefined;
                                            break;
                                        }
                                    }
                                }
                                if (this.minli[i][j] != undefined) {
                                    for (let t = j + 1; t < 4; t++) {
                                        if (this.minli[i][t] != undefined) {
                                            if (this.minli[i][t].innerText === this.minli[i][j].innerText) {
                                                this.minli[i][t].style.top = this.minli_position[i][j].Y + "px";
                                                this.minli[i][j].innerText = this.minli[i][j].innerText * 2;
                                                this.minli[i][t].remove();
                                                this.minli[i][t] = undefined;
                                            }
                                            break;
                                        }
                                    }
                                }
                            }
                        }




                        this.play();
                    }
                    if (key == 83 || key == 40) {
                        for (let i = 0; i < 4; i++) {
                            for (let j = 3; j >= 0; j--) {
                                if (this.minli[i][j] == undefined) {
                                    for (let t = j - 1; t >= 0; t--) {
                                        if (this.minli[i][t] != undefined) {
                                            this.minli[i][t].style.top = this.minli_position[i][j].Y + "px";
                                            this.minli[i][j] = this.minli[i][t];
                                            this.minli[i][t] = undefined;
                                            break;
                                        }
                                    }
                                }
                                if (this.minli[i][j] != undefined) {
                                    for (let t = j - 1; t >= 0; t--) {
                                        if (this.minli[i][t] != undefined) {
                                            if (this.minli[i][t].innerText === this.minli[i][j].innerText) {
                                                this.minli[i][t].style.top = this.minli_position[i][j].Y + "px";
                                                this.minli[i][j].innerText = this.minli[i][j].innerText * 2;
                                                this.minli[i][t].remove();
                                                this.minli[i][t] = undefined;
                                            }
                                            break;
                                        }
                                    }
                                }
                            }
                        }


                        this.play();
                    }
                    if (key == 39 || key == 68) {

                        for (let i = 0; i < 4; i++) {
                            for (let j = 3; j >= 0; j--) {
                                if (this.minli[j][i] == undefined) {
                                    for (let t = j - 1; t >= 0; t--) {
                                        if (this.minli[t][i] != undefined) {
                                            this.minli[t][i].style.left = this.minli_position[j][i].X + "px";
                                            this.minli[j][i] = this.minli[t][i];
                                            this.minli[t][i] = undefined;
                                            break;
                                        }
                                    }
                                }
                                if (this.minli[j][i] != undefined) {
                                    for (let t = j - 1; t >= 0; t--) {
                                        if (this.minli[t][i] != undefined) {
                                            if (this.minli[t][i].innerText === this.minli[j][i].innerText) {
                                                this.minli[t][i].style.left = this.minli_position[j][i].X + "px";

                                                this.minli[j][i].innerText = this.minli[j][i].innerText * 2;
                                                this.minli[t][i].remove();
                                                this.minli[t][i] = undefined;

                                            }
                                            break;
                                        }
                                    }
                                }
                            }
                        }

                        this.play();
                    }

                }
            }
        }
        var game = new Game();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值