跟着别人敲了敲关于JavaScript的2048游戏(仅有JavaScript的代码)
init.js
var board = new Array(),//每个格子的数字
score = 0,//分数
has_conflicted = new Array(),//解决连续消除的标记
successString = 'Success',
gameOverString = 'GameOver';
$(function(){
alert("点击New Gamec开始或重开游戏");
$("#start").click(newGame);
});//加载完之后开始游戏
function newGame(){
//初始化数组
for(var i=0;i<4;i++){
board[i] = new Array();
has_conflicted[i]= new Array();
for(var j=0;j<4;j++){
board[i][j]=0;
has_conflicted[i][j]=false;
}
}
//通过newGame按钮开始游戏时初始化棋盘
updateBoardView();
score = 0;
updateScore(score);//通过newGame按钮开始游戏时初始化分数
//棋盘上随机出现两个数字
generateOneNum();
generateOneNum();
}
//随机一个位置和一个数字
//并将数字显示出来
function generateOneNum(){
//如果棋盘已满返回
if(noSpace()){
return false;
}
var randX,randY,time=0;
//最多随机50次
//保证随机出来的位置上为空
do{
time++;
randX = Math.floor(Math.random()*4);
randY = Math.floor(Math.random()*4);
}while(board[randX][randY]&&(time<50))
//50次之后依然随机不到,循环查找空位
if(time==50){
for(var i=0;i<4;i++){
for(var j=0;j<4;j++){
if(!board[i][j]){
randX=i;
randY=j;
}
}
}
}
//随机出一个数字2或者4
randNum = Math.random()>0.1?2:4;
board[randX][randY]=randNum;//设定棋盘上的数字
showNumAnimate(randX,randY,randNum);//动态显示数字
return true;
}
//动态显示数字
function showNumAnimate(i,j,randNum){
//为目标单元格添加p元素
var tem=$("tr:eq("+i+")").children("td:eq("+j+")")
.append("<p>"+randNum+"</p>")
.children("p");
//动态显示数字
te