js实现2048游戏

代码语言:html

所属分类:游戏

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>BFW NEW PAGE</title>

    <style>
        html {
    height: 100%;
}
body {
    overflow-x: hidden;
    width: 100%;
    height: 100%;
    font-size: 16px;
}
* {
    margin: 0;
    padding: 0;
}
#button {
    position: absolute;
    border-bottom: none;
    background: skyblue;
}
#button button {
    height: 100%;
    width: 33.333%;
    display: inline-block;
}
#button button:last-child {
    margin-right: 0;
}
#div {
    position: absolute;
    border: 1px solid gray;
    cursor: move;
}
canvas {
    position: relative;
    left: 0;
    top: 0;
    margin-left: 2px;
    margin-top: 2px;
    z-index: -2;
}
#div img {
    position: absolute;
    display: inline-block;
    width: 100%;;
    height: 100%;
    left: 0;
    top:0;
    margin-left: 2px;
    margin-top: 2px;
    z-index: -3;
}
.off {
    background: #d5d5d5;
}
    </style>
</head>
<body>
   <div id="button" style="display: none"><button value="回退" data-num="3">回退:3次</button><button value="重新开始">重新开始</button><button value="开始游戏">开始游戏</button></div>
<div id="div" data-game="false">
    <canvas>请升级浏览器</canvas>
    <img id="img"/>
</div>
    <script type="text/javascript">
     var canvas = document.querySelector('canvas');
var button = document.getElementById('button');
var draw = canvas.getContext('2d')?(button.style.display='block',draw=canvas.getContext('2d')):'';
var div = document.getElementById('div');
for (var i = 0; i < button.children.length - 1; i++) {
    button.children[i].disabled = true;
}
var arr = [];
var arr1 = [];
var num = 4;
var music = new Audio('./music/c2.mp3');
var color = {
    0: '#5cb85c',
    2: '#FFCCCC',
    4: '#99CFFF',
    8: '#0099CC',
    16: '#0066CC',
    32: '#FFCC99',
    64: '#FF9999',
    128: '#CCFF66',
    256: '#FFFF00',
    512: '#CCFF99',
    1024: '#CCFF66',
    2048: '#FFCC33'
};
style();
map(num, true);
view(true);

function style() {
    var w = window.innerWidth - 4;
    var w1 = w;
    var h = window.innerHeight;
    if (w > 600) {
        w = 600;
        if (w + 30 >= h) {
            w -= 30
        }
    }
    if (w < 220) {
        w = 220
    }
    div.style.cssText = 'width:' + w + 'px;' + ' height:' + w + 'px;' + ' top:' + ((h - (w + 30)) / 2 + (30 / 2)) + 'px;' + ' left:' + ((w1 / 2) - (w / 2)) + 'px;';
    button.style.cssText = 'width:' + w + 'px;' + ' height:' + 30 + 'px;' + ' top:' + ((h - (w + 30)) / 2 - (30 / 2)) + 'px;' + ' left:' + ((w1 / 2) - (w / 2)) + 'px;';
    canvas.width = w;
    canvas.height = w;
    draw.font = (w / 10) + 'px Arial';
    draw.textAlign = 'center';
    draw.textBaseline = 'middle';
    draw.fillStyle = 'black';
    draw.save();
}

window.onresize = function (ev) {
    style();
    map(num, false);
    view(true);
    view(false, 0, false)
};

function map(num, on) {
    var w = canvas.width / num;
    if (on) {
        for (var i = 0; i < num; i++) {
            arr[i] = [];
            for (var z = 0; z < num; z++) {
                arr[i].push({value: 0, x: z * w, y: i * w, max: 0, min: 0, add: true})
            }
        }
    } el.........完整代码请登录后点击上方下载按钮下载查看

网友评论0