<
网站运营
当前位置 首页 > 文章 > 网站运营

2048网页版(给大家分享一个网页版的2048小游戏做法)

发布时间:2024-04-05 12:15:47   来源:网站管理员   35232 阅读   0 评论

给大家分享一个网页版的2048小游戏做法

html:HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

网页版2048游戏HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

分数:0
HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

重新开始HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

HO3小星星网站目录

Game2048js文件:HO3小星星网站目录

(function(window, document, $) {HO3小星星网站目录

function Game2048(opt) {HO3小星星网站目录

var prefix = opt.prefix, len = opt.len, size = opt.size, margin = opt.margin;HO3小星星网站目录

var score = 0;HO3小星星网站目录

var winNum = 2048;HO3小星星网站目录

var isGameOver = true;HO3小星星网站目录

var board = new Board(len);HO3小星星网站目录

var view = new View(prefix, len, size, margin);HO3小星星网站目录

view.init();HO3小星星网站目录

board.onGenerate = function(e) {HO3小星星网站目录

view.addNum(e.x, e.y, e.num);HO3小星星网站目录

};HO3小星星网站目录

board.onMove = function(e) {HO3小星星网站目录

if (e.to.num >= winNum) {HO3小星星网站目录

isGameOver = true;HO3小星星网站目录

setTimeout(function() { view.win(); }, 300);HO3小星星网站目录

}HO3小星星网站目录

if (e.to.num > e.from.num) {HO3小星星网站目录

score += e.to.num;HO3小星星网站目录

view.updateScore(score);HO3小星星网站目录

}HO3小星星网站目录

view.move(e.from, e.to);HO3小星星网站目录

};HO3小星星网站目录

board.onMoveComplete = function(e) {HO3小星星网站目录

if (!board.canMove()) {HO3小星星网站目录

isGameOver = true;HO3小星星网站目录

setT2048网页版imeout(function() { view.over(score); }, 300);HO3小星星网站目录

}HO3小星星网站目录

if (e.moved) {HO3小星星网站目录

setTimeout(function(){ board.generate(); }, 200);HO3小星星网站目录

}HO3小星星网站目录

};HO3小星星网站目录

$(document).keydown(function(e) {HO3小星星网站目录

if (isGameOver) {HO3小星星网站目录

return false;HO3小星星网站目录

}HO3小星星网站目录

switch (e.which) {HO3小星星网站目录

case 37: board.moveLeft(); break;HO3小星星网站目录

case 38: board.moveUp(); break;HO3小星星网站目录

case 39: board.moveRight(); break;HO3小星星网站目录

case 40: board.moveDown(); break;HO3小星星网站目录

}HO3小星星网站目录

});HO3小星星网站目录

function start() {HO3小星星网站目录

score = 0;HO3小星星网站目录

view.updateScor2048网页版e(0);HO3小星星网站目录

view.cleanNum();HO3小星星网站目录

board.init();HO3小星星网站目录

board.generate();HO3小星星网站目录

board.generate();HO3小星星网站目录

isGameOver = false;HO3小星星网站目录

}HO3小星星网站目录

$('#' + prefix + '_restart').click(start);HO3小星星网站目录

start();HO3小星星网站目录

};HO3小星星网站目录

// 数据处理HO3小星星网站目录

function Board(len) {HO3小星星网站目录

this.len = len;HO3小星星网站目录

this.arr = [];HO3小星星网站目录

}HO3小星星网站目录

Board.prototype = {HO3小星星网站目录

// 事件HO3小星星网站目录

onGenerate: function() {},HO3小星星网站目录

onMove: function() {},HO3小星星网站目录

onMoveComplete: function() {},HO3小星星网站目录

// 创建数组HO3小星星网站目录

init: function() {HO3小星星网站目录

for (var arr = [], x = 0, len = this.len; x < len; ++x) {HO3小星星网站目录

arr[x] = [];HO3小星星网站目录

for (var y = 0; y < len; ++y) {HO3小星星网站目录

arr[x][y] = 0;HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

this.arr = arr;HO3小星星网站目录

},HO3小星星网站目录

// 在随机位置增加一个随机数HO3小星星网站目录

generate: function() {HO3小星星网站目录

var empty = [];HO3小星星网站目录

for (var x = 0, arr = this.arr, len = arr.length; x < len; ++x) {HO3小星星网站目录

for (var y = 0; y < len; ++y) {HO3小星星网站目录

if (arr[x][y] === 0) {HO3小星星网站目录

empty.push({x: x, y: y});HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

if (empty.length < 1) {HO3小星星网站目录

return false;HO3小星星网站目录

}HO3小星星网站目录

var pos = empty[Math.floor((Math.random() * empty.length))];HO3小星星网站目录

this.arr[pos.x][pos.y] = Math.random() < 0.5 ? 2 : 4;HO3小星星网站目录

this.onGenerate({x: pos.x, y: pos.y, num: this.arr[pos.x][pos.y]});HO3小星星网站目录

},HO3小星星网站目录

// 左移HO3小星星网站目录

moveLeft: function() {HO3小星星网站目录

var canMove = false;HO3小星星网站目录

// 从上到下,从左到右HO3小星星网站目录

for (var x = 0, len = this.arr.length; x < len; ++x) {HO3小星星网站目录

for (var y = 0, arr = this.arr[x]; y < len; ++y) {HO3小星星网站目录

// 从 y + 1 位置开始,向右查找HO3小星星网站目录

for (var next = y + 1; next < len; ++next) {HO3小星星网站目录

// 如果 next 单元格是 0,找下一个不是吗 0 的单元格HO3小星星网站目录

if (arr[next] === 0) {HO3小星星网站目录

continue;HO3小星星网站目录

}HO3小星星网站目录

// 如果 y 数字是 0,则将 next 移动到 y 位置,然后将 y 减 1 重新查找HO3小星星网站目录

if (arr[y] === 0) {HO3小星星网站目录

arr[y] = arr[next];HO3小星星网站目录

this.onMove({from: {x: x, y: next, num: arr[next]}, to: {x: x, y: y, num: arr[y]}});HO3小星星网站目录

arr[next] = 0;HO3小星星网站目录

canMove = true;HO3小星星网站目录

--y;HO3小星星网站目录

// 如果 y 与 next 单元格数字相等,则将 next 移动并合并给 yHO3小星星网站目录

} else if (arr[y] === arr[next]) {HO3小星星网站目录

arr[y] += arr[next];HO3小星星网站目录

this.onMove({from: {x: x, y: next, num: arr[next]}, to: {x: x, y: y, num: arr[y]}});HO3小星星网站目录

arr[next] = 0;HO3小星星网站目录

canMove = true;HO3小星星网站目录

}HO3小星星网站目录

break;HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

this.onMoveComplete({moved: canMove});HO3小星星网站目录

},HO3小星星网站目录

moveRight: function() {HO3小星星网站目录

var moved = false;HO3小星星网站目录

for (var x = 0, len = this.arr.length; x < len; ++x) {HO3小星星网站目录

for (var y = len - 1, arr = this.arr[x]; y >= 0; --y) {HO3小星星网站目录

for (var prev = y - 1; prev >= 0; --prev) {HO3小星星网站目录

if (arr[prev] === 0) {HO3小星星网站目录

continue;HO3小星星网站目录

}HO3小星星网站目录

if (arr[y] === 0) {HO3小星星网站目录

arr[y] = arr[prev];HO3小星星网站目录

this.onMove({from: {x: x, y: prev, num: arr[prev]}, to: {x: x, y: y, num: arr[y]}});HO3小星星网站目录

arr[prev] = 0;HO3小星星网站目录

moved = true;HO3小星星网站目录

++y;HO3小星星网站目录

} else if (arr[y] === arr[prev]) {HO3小星星网站目录

arr[y] += arr[prev];HO3小星星网站目录

this.onMove({from: {x: x, y: prev, num: arr[prev]}, to: {x: x, y: y, num: arr[y]}});HO3小星星网站目录

arr[prev] = 0;HO3小星星网站目录

moved = true;HO3小星星网站目录

}HO3小星星网站目录

break;HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

this.onMoveComplete({moved: moved});HO3小星星网站目录

},HO3小星星网站目录

moveUp: function() {HO3小星星网站目录

var canMove = false;HO3小星星网站目录

for (var arr = this.arr, len = arr.length, y = 0; y < len; ++y) {HO3小星星网站目录

for (var x = 0; x < len; ++x) {HO3小星星网站目录

for (var next = x + 1; next < len; ++next) {HO3小星星网站目录

if (arr[next][y] === 0) {HO3小星星网站目录

continue;HO3小星星网站目录

}HO3小星星网站目录

if (arr[x][y] === 0) {HO3小星星网站目录

arr[x][y] = arr[next][y];HO3小星星网站目录

this.onMove({from: {x: next, y: y, num: arr[next][y]}, to: {x: x, y: y, num: arr[x][y]}});HO3小星星网站目录

arr[next][y] = 0;HO3小星星网站目录

canMove = true;HO3小星星网站目录

--x;HO3小星星网站目录

} else if (arr[x][y] === arr[next][y]) {HO3小星星网站目录

arr[x][y] += arr[next][y];HO3小星星网站目录

this.onMove({from: {x: next, y: y, num: arr[next][y]}, to: {x: x, y: y, num: arr[x][y]}});HO3小星星网站目录

arr[next][y] = 0;HO3小星星网站目录

canMove = true;HO3小星星网站目录

}HO3小星星网站目录

break;HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

this.onMoveComplete({moved: canMove});HO3小星星网站目录

},HO3小星星网站目录

moveDown: function() {HO3小星星网站目录

var canMove = false;HO3小星星网站目录

for (var arr = this.arr, len = arr.length, y = 0; y < len; ++y) {HO3小星星网站目录

for (var x = len - 1; x >= 0; --x) {HO3小星星网站目录

for (var prev = x - 1; prev >= 0; --prev) {HO3小星星网站目录

if (arr[prev][y] === 0) {HO3小星星网站目录

continue;HO3小星星网站目录

}HO3小星星网站目录

if (arr[x][y] === 0) {HO3小星星网站目录

arr[x][y] = arr[prev][y];HO3小星星网站目录

this.onMove({from: {x: prev, y: y, num: arr[prev][y]}, to: {x: x, y: y, num: arr[x][y]}});HO3小星星网站目录

arr[prev][y] = 0;HO3小星星网站目录

canMove = true;HO3小星星网站目录

++x;HO3小星星网站目录

} else if (arr[x][y] === arr[prev][y]) {HO3小星星网站目录

arr[x][y] += arr[prev][y];HO3小星星网站目录

this.onMove({from: {x: prev, y: y, num: arr[prev][y]}, to: {x: x, y: y, num: arr[x][y]}});HO3小星星网站目录

arr[prev][y] = 0;HO3小星星网站目录

canMove = true;HO3小星星网站目录

}HO3小星星网站目录

break;HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

this.onMoveComplete({moved: canMove});HO3小星星网站目录

},HO3小星星网站目录

canMove: function() {HO3小星星网站目录

for (var x = 0, arr = this.arr, len = arr.length; x < len; ++x) {HO3小星星网站目录

for (var y = 0; y < len; ++y) {HO3小星星网站目录

if (arr[x][y] === 0) {HO3小星星网站目录

return true;HO3小星星网站目录

}HO3小星星网站目录

var curr = arr[x][y], right = arr[x][y + 1];HO3小星星网站目录

var down = arr[x + 1] ? arr[x + 1][y] : null;HO3小星星网站目录

if (right === curr || down === curr) {HO3小星星网站目录

return true;HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

return false;HO3小星星网站目录

}HO3小星星网站目录

};HO3小星星网站目录

// 视图处理HO3小星星网站目录

function View(prefix, len, size, margin) {HO3小星星网站目录

this.prefix = prefix;HO3小星星网站目录

this.len = len; // 单元格单边的数量(实际数量 len * len)HO3小星星网站目录

this.size = size; // 每个单元格的边长HO3小星星网站目录

this.margin = margin; // 每个单元格的间距HO3小星星网站目录

this.score = $('#' + prefix + '_score');HO3小星星网站目录

this.container = $('#' + prefix + '_container');HO3小星星网站目录

var containerSize = len * size + margin * (len + 1);HO3小星星网站目录

this.container.css({width:containerSize , height: containerSize});HO3小星星网站目录

this.nums = {};HO3小星星网站目录

}HO3小星星网站目录

View.prototype = {HO3小星星网站目录

// 计算位置HO3小星星网站目录

getPos: function(n) {HO3小星星网站目录

return this.margin + n * (this.size + this.margin);HO3小星星网站目录

},HO3小星星网站目录

init: function() {HO3小星星网站目录

for (var x = 0, len = this.len; x < len; ++x) {HO3小星星网站目录

for (var y = 0; y < len; ++y) {HO3小星星网站目录

var $cell = $('

');HO3小星星网站目录

$cell.css({HO3小星星网站目录

width: this.size + 'px', height: this.size + 'px',HO3小星星网站目录

top: this.getPos(x), left: this.getPos(y)HO3小星星网站目录

}).appendTo(this.container);HO3小星星网站目录

}HO3小星星网站目录

}HO3小星星网站目录

},HO3小星星网站目录

addNum: function(x, y, num) {HO3小星星网站目录

var $num = $('

');HO3小星星网站目录

$num.text(num).css({HO3小星星网站目录

top: this.getPos(x) + parseInt(this.size / 2),HO3小星星网站目录

left: this.getPos(y) + parseInt(this.size / 2)HO3小星星网站目录

}).appendTo(this.container).animate({HO3小星星网站目录

width: this.size + 'px',HO3小星星网站目录

height: this.size + 'px',HO3小星星网站目录

lineHeight: this.size + 'px',HO3小星星网站目录

top: this.getPos(x),HO3小星星网站目录

left: this.getPos(y)HO3小星星网站目录

}, 100);HO3小星星网站目录

this.nums[x + '-' + y] = $num;HO3小星星网站目录

},HO3小星星网站目录

move: function(from, to) {HO3小星星网站目录

var fromIndex = from.x + '-' + from.y, toIndex = to.x + '-' + to.y;HO3小星星网站目录

var clean = this.nums[toIndex];HO3小星星网站目录

this.nums[toIndex] = this.nums[fromIndex];HO3小星星网站目录

delete this.nums[fromIndex];HO3小星星网站目录

var prefix = this.prefix + '-num-';HO3小星星网站目录

var pos = {top: this.getPos(to.x), left: this.getPos(to.y)};HO3小星星网站目录

this.nums[toIndex].finish().animate(pos, 200, function() {HO3小星星网站目录

if (to.num > from.num) {HO3小星星网站目录

clean.remove();HO3小星星网站目录

$(this).text(to.num).removeClass(prefix + from.num).addClass(prefix + to.num);HO3小星星网站目录

}HO3小星星网站目录

});HO3小星星网站目录

},HO3小星星网站目录

updateScore: function(score) {HO3小星星网站目录

this.score.text(score);HO3小星星网站目录

},HO3小星星网站目录

win: function() {HO3小星星网站目录

$('#' + this.prefix + '_over_info').html('

您获胜了HO3小星星网站目录

');HO3小星星网站目录

$('#' + this.prefix + '_over').removeClass(this.prefix + '-hide');HO3小星星网站目录

},HO3小星星网站目录

over: function(score) {HO3小星星网站目录

$('#' + this.prefix + '_over_info').html('

本次得分HO3小星星网站目录

' + score + 'HO3小星星网站目录

');HO3小星星网站目录

$('#' + this.prefix + '_over').removeClass(this.prefix + '-hide');HO3小星星网站目录

},HO3小星星网站目录

cleanNum: function() {HO3小星星网站目录

this.nums = {};HO3小星星网站目录

$('#' + this.prefix + '_over').addClass(this.prefix + '-hide');HO3小星星网站目录

$('.' + this.prefix + '-num').remove();HO3小星星网站目录

}HO3小星星网站目录

};HO3小星星网站目录

window['Game2048'] = Game2048;HO3小星星网站目录

})(window, document, jQuery);HO3小星星网站目录

然后就是还要自己下载一个jQuery文件;HO3小星星网站目录

0