JavaScript 2048 游戏实例代码(简单易懂)
来源: 阅读:1380 次 日期:2016-07-16 13:15:57
温馨提示: 小编为您整理了“JavaScript 2048 游戏实例代码(简单易懂)”,方便广大网友查阅!

使用javascript制作的2048小游戏非常好玩,有意思,下面给大家分享使用javascript代码制作的2048游戏,需要的朋友参考下吧

直接给大家贴代码了,觉得很满意直接拿去。

名单

<!DOCTYPE html PUBLIC "-//WC//DTD XHTML . Transitional//EN" "http://www.w.org/TR/xhtml/DTD/xhtml-transitional.dtd">

<html xmlns="http://www.w.org//xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-" />

<title>无标题文档</title>

<style>

header{display:block; margin: auto; width:%; text-align:center;}

header h{font-size:px; font-family:Arial, Helvetica, sans-serif; font-weight:bold;}

header #newgamebutton{display:block; margin:px auto; width:px; padding:px px; background-color:#fa; font-family:Arial; color:white; border-radius:px; text-decoration:none;}

header #newgamebutton:hover{background-color:#fb;}

header p{font-family:Arial; font-size:px; margin:px auto;}

#grid-container{width:px; height:px; padding:px; margin:px auto; background-color:#bbada; border-radius:px; position:relative;}

.grid-cell{width:px; height:px; border-radius:px; color:white; background-color:#cccb; position:absolute; font-family:Arial; font-weight:bold; font-size:px; line-height:px; text-align:center;}

.gameover{display:block; margin: auto; width:px; text-align:center; vertical-align:middle; position:absolute;}

.gameover p {

font-family: Arial;

font-size: px;

color: white;

margin: px auto;

margin-top: px;

}

.gameover span {

font-family: Arial;

font-size: px;

color: white;

margin: px auto;

}

#restartgamebutton {

display: block;

margin: px auto;

width: px;

padding: px px;

background-color: #fa;

font-family: Arial;

font-size: px;

color: white;

border-radius: px;

text-decoration: none;

}

#restartgamebutton:hover {

background-color: #fb;

}

#showGameover{width:px; padding:px px; background-color:#fa; font-family:Arial; color:white; border-radius:px; text-decoration:none; font-size:px; position:absolute;}

</style>

<script>

window.onload = function (){

//newgame();

var showScore = document.getElementById('score');

score = ;

init();

generateOneNumber();

generateOneNumber();

window.onkeydown = function (e){

var e = e || window.event;

switch(e.keyCode){

case :

if(canMoveLeft(board)){

moveLeft();

generateOneNumber();

isgameover();

}

break;

case :

if(canMoveUp(board)){

moveUp();

generateOneNumber();

isgameover();

}

break;

case :

if(canMoveRight(board)){

moveRight();

generateOneNumber();

isgameover();

}

break;

case :

if(canMoveDown(board)){

moveDown();

generateOneNumber();

isgameover();

}

break;

default :

break;

}

};

};

function generateOneNumber() {

if(!nospace(board)){

var randx = parseInt(Math.floor(Math.random() * ));

var randy = parseInt(Math.floor(Math.random() * ));

while (true) {

if (board[randx][randy] == ) {

break;

}

var randx = parseInt(Math.floor(Math.random() * ));

var randy = parseInt(Math.floor(Math.random() * ));

}

var randNumber = Math.random() < . ? : ;

board[randx][randy] = randNumber;

var gridCell = document.getElementById('grid-cell-'+randx+'-'+randy);

gridCell.innerHTML = randNumber;

//

}

else {

gameover();

}

}

function newgame() {

window.location.reload();

}

var board = new Array();

function init(){

for(var i=;i<;i++){

board[i] = new Array();

for(var j=;j<;j++){

board[i][j] = ;

var gridCell = document.getElementById('grid-cell-'+i+'-'+j);

gridCell.style.top = (+i*)+'px';

gridCell.style.left = (+j*)+'px';

}

}

}

function getNumberBackgroundColor(number) {

switch (number) {

case :return "#eeeda";break;

case :return "#edec";break;

case :return "#fb";break;

case :return "#f";break;

case :return "#fcf";break;

case :return "#feb";break;

case :return "#edcf";break;

case :return "#edcc";break;

case :return "#c";break;

case :return "#be";break;

case :return "#c";break;

case :return "#ac";break;

case :return "#c";break;

}

}

function getNumberColor(number) {

if (number <= ) {

return "#e"

}

return "white";

}

function nospace(board) {

for (var i = ; i < ; i++) {

for (var j = ; j < ; j++) {

if (board[i][j] == ) {

return false;

}

}

}

return true;

}

function canMoveLeft(board) {

for (var i = ; i < ; i++) {

for (var j = ; j < ; j++) {

if (board[i][j] != ) {

if (board[i][j - ] == || board[i][j - ] == board[i][j]) {return true; }

}

}

}

return false;

}

function moveLeft() {

for (var i = ; i < ; i++) {

for (var j = ; j < ; j++) {

if (board[i][j] != ) {

for (var k = j-; k > -; k--) {

if(board[i][k] == || board[i][k] == board[i][j]){

board[i][k] = board[i][k] + board[i][j];

board[i][j] = ;

var gridCell = document.getElementById('grid-cell-'+i+'-'+j);

gridCell.innerHTML = '';

var gridCellk = document.getElementById('grid-cell-'+i+'-'+k);

gridCellk.innerHTML = board[i][k];

gridCellk.style.backgroundColor = getNumberBackgroundColor(board[i][k]);

gridCell.style.backgroundColor = '#cccb';

gridCellk.style.color = getNumberColor(board[i][k]);

gridCell.style.color = 'white';

score += board[i][k];

var showScore = document.getElementById('score');

showScore.innerHTML = score;

j = k;

//

}

else {

break; //跳出 var k 的for循环

}

}

}

}

}

}

function canMoveUp(board) {

for (var j = ; j < ; j++) {

for (var i = ; i < ; i++) {

if (board[i][j] != ) {

if (board[i - ][j] == || board[i - ][j] == board[i][j]) {return true; }

}

}

}

return false;

}

function moveUp() {

for (var j = ; j < ; j++) {

for (var i = ; i < ; i++) {

if (board[i][j] != ) {

for (var k = i-; k > -; k--) {

if(board[k][j] == || board[k][j] == board[i][j]){

board[k][j] = board[k][j] + board[i][j];

board[i][j] = ;

var gridCell = document.getElementById('grid-cell-'+i+'-'+j);

gridCell.innerHTML = '';

var gridCellk = document.getElementById('grid-cell-'+k+'-'+j);

gridCellk.innerHTML = board[k][j];

gridCellk.style.backgroundColor = getNumberBackgroundColor(board[k][j]);

gridCell.style.backgroundColor = '#cccb';

gridCellk.style.color = getNumberColor(board[i][k]);

gridCell.style.color = 'white';

score += board[k][j];

var showScore = document.getElementById('score');

showScore.innerHTML = score;

i = k;

//

}

else {

break; //跳出 var k 的for循环

}

}

}

}

}

}

function canMoveRight(board) {

for (var i = ; i < ; i++) {

for (var j = ; j > -; j--) {

if (board[i][j] != ) {

if (board[i][j + ] == || board[i][j + ] == board[i][j]) {return true; }

}

}

}

return false;

}

function moveRight() {

for (var i = ; i < ; i++) {

for (var j = ; j > -; j--) {

if (board[i][j] != ) {

for (var k = j+; k < ; k++) {

if(board[i][k] == || board[i][k] == board[i][j]){

board[i][k] = board[i][k] + board[i][j];

board[i][j] = ;

var gridCell = document.getElementById('grid-cell-'+i+'-'+j);

gridCell.innerHTML = '';

var gridCellk = document.getElementById('grid-cell-'+i+'-'+k);

gridCellk.innerHTML = board[i][k];

gridCellk.style.backgroundColor = getNumberBackgroundColor(board[i][k]);

gridCell.style.backgroundColor = '#cccb';

gridCellk.style.color = getNumberColor(board[i][k]);

gridCell.style.color = 'white';

score += board[i][k];

var showScore = document.getElementById('score');

showScore.innerHTML = score;

j = k;

//

}

else {

break; //跳出 var k 的for循环

}

}

}

}

}

}

function canMoveDown(board) {

for (var j = ; j < ; j++) {

for (var i = ; i > -; i--) {

if (board[i][j] != ) {

if (board[i + ][j] == || board[i + ][j] == board[i][j]) {return true; }

}

}

}

return false;

}

function moveDown() {

for (var j = ; j < ; j++) {

for (var i = ; i > -; i--) {

if (board[i][j] != ) {

for (var k = i+; k < ; k++) {

if(board[k][j] == || board[k][j] == board[i][j]){

board[k][j] = board[k][j] + board[i][j];

board[i][j] = ;

var gridCell = document.getElementById('grid-cell-'+i+'-'+j);

gridCell.innerHTML = '';

var gridCellk = document.getElementById('grid-cell-'+k+'-'+j);

gridCellk.innerHTML = board[k][j];

gridCellk.style.backgroundColor = getNumberBackgroundColor(board[k][j]);

gridCell.style.backgroundColor = '#cccb';

gridCellk.style.color = getNumberColor(board[i][k]);

gridCell.style.color = 'white';

score += board[k][j];

var showScore = document.getElementById('score');

showScore.innerHTML = score;

i = k;

//

}

else {

break; //跳出 var k 的for循环

}

}

}

}

}

}

function isgameover() {

if (nospace(board) && nomove(board)) {

gameover();

}

}

function nomove(board) {

if (canMoveDown(board) || 

canMoveLeft(board) || 

canMoveRight(board) || 

canMoveUp(board)) {

return false;

}

return true;

}

function bounce(obj,top){

clearInterval(obj.timer);

var nSpeed = ;

var acceleration = ;

var Flag = ;

obj.timer = setInterval(function (){

nSpeed += acceleration;

nSpeed *= .;

if(obj.offsetTop + nSpeed >= top){

obj.style.top = top + 'px';

nSpeed *= -;

}else{

if(Math.abs(nSpeed) < && Math.abs(top-obj.offsetTop)<){

clearInterval(obj.timer);

}

else{

obj.style.top = obj.offsetTop + nSpeed + 'px';

}

}

},);

}

function gameover() {

//alert("gameover!");

var gameover = document.createElement('div');

gameover.id = 'showGameover';

gameover.innerHTML = 'GAME OVER';

var gridContainer = document.getElementById('grid-container');

gridContainer.appendChild(gameover);

var showGameover = document.getElementById('showGameover');

showGameover.style.left = (gridContainer.offsetWidth - showGameover.offsetWidth ) / + 'px';

bounce(showGameover,);

}

</script>

</head>

<body>

<header>

<!--<h> </h>-->

<a href="javascript:newgame();" id="newgamebutton"> New Game </a>

<p> score: <span id="score"></span></p>

<div id="grid-container">

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

<div class="grid-cell" id="grid-cell--"></div>

</div>

</header>

</body>

</html>

以上代码还很满意吧,都是些div+css方面的知识

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map