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();