<!DOCTYPE html>
<html onkeydown="kd()">
<head>
<meta charset="utf-8">
<title>2048小游戏</title>
<style type="text/css">
td {
width: 80px;
height: 80px;
background-color: antiquewhite;
font-size: 32px;
text-align: center;
}
body{
text-align: center;
}
table{
margin:0 auto;
}
</style>
</head>
<body onload="newGame()">
<h1>2048</h1>
<p>SCORE:<span id="score1"></span></p >
<table id="tbl">
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<script type="text/javascript">
var a = [
[2, 0, 8, 2],
[4, 0, 2, 0],
[2, 2, 4, 4],
[2, 0, 2, 0]
]
function newGame() {
// 把数组清空
// 在随机空格中添加2个随机数字(2或4)
// 输出数组
for (i = 0; i < a.length; i++)
for (j = 0; j < a[i].length; j++)
a[i][j] =0;
suiji();
suiji();
out();
}
function suiji(){
var num = Math.random() > 0.5 ? 2 : 4;
var i = Math.floor(Math.random() * 4);
var j = Math.floor(Math.random() * 4);
if (a[i][j] == 0) {
a[i][j] = num;
} else {
suiji();
}
/* var i = Math.floor(Math.random() * a.length);
var j = Math.floor(Math.random() * a.length);
var num = Math.random() > 0.5 ? 2 : 4;
a[i][j] = num;
tbl.rows[i].cells[j].innerHTML = num; */
/* var r, l;
do{
r = Math.floor(Math.random() * a.length);
l = Math.floor(Math.random() * a.length);
} while (a[r][l] != 0)
a[r][l] = Math.random() > 0.5 ? 2 : 4;*/
}
function newNum(){
var i, j;
do{
i = Math.floor(Math.random() * 4);
j = Math.floor(Math.random() * 4);
} while (a[i][j] != 0)
a[i][j] = Math.random() > 0.5 ? 2 : 4;
}
function out() {
for (i = 0; i < a.length; i++)
for (j = 0; j < a[i].length; j++)
if (a[i][j] > 0)
tbl.rows[i].cells[j].innerHTML = a[i][j]
else
tbl.rows[i].cells[j].innerHTML = '0'
}
function isGameOver(){
for (i = 0; i< a[j].length-1;i++){
for (j = 0; j< a[i].length-1; j++){
if(a[j][i] == a[i][j-1]){
return false;
}
if(a[j][i] == a[i-1][j]){
return false;
}
}
}
return true;
}
function getScore() {
score = 0;
document.getElementById('score').innerHTML = score;
}
function kd() {
if (event.keyCode == 37) {
mLeft();
out();
newNum();
}else
if (event.keyCode == 38) {
mUp();
out();
newNum();
}else
if (event.keyCode == 39) {
mRight();
out();
newNum();
}else
if (event.keyCode == 40) {
mDown();
out();
newNum();
}
}
function mRight() {
for(w=0;w<a.length;w++){
j=a[w].length-1;
i=a[w].length-1-1;
for(i=a[w].length-1-1;i>=0;i--){
if(a[w][i]>0){
if(a[w][j]==0){
a[w][j]=a[w][i];
a[w][i]=0;
}else
if(a[w][j]==a[w][i]){
a[w][j] *=2;
a[w][i]=0;
j--;
}else{
j--;
if(j>i){
a[w][j]=a[w][i];
a[w][i]=0;
score = a[i][j];
}
}
}
}
}
} //右滑
function mUp() {
for(w = 0; w < a.length; w++) {
j = 0;
i = 1;
for(i = 1; i < a[w].length; i++) {
if(a[i][w] > 0) {
if(a[j][w]==0){
a[j][w] = a[i][w];
a[i][w] = 0;
}else
if(a[j][w] == a[i][w]) {
a[j][w] *= 2;
a[i][w] = 0;
j++;
}else {
j++;
if(j < i) {
a[j][w] = a[i][w]
a[i][w] = 0
score = a[i][j];
}
}
}
}
}
} //上滑
function mDown() {
for(w = 0; w < a.length; w++) {
j=a[w].length-1;
i=a[w].length-1-1;
for(i = a[w].length-1-1; i >= 0; i--) {
if(a[i][w] > 0) {
if(a[j][w] == 0) {
a[j][w] = a[i][w];
a[i][w] = 0;
}else
if(a[j][w] == a[i][w]) {
a[j][w] *= 2;
a[i][w] = 0;
j--;
}else {
j--;
if (j > i) {
a[j][w] = a[i][w];
a[i][w] =0
score = a[i][j];
}
}
}
}
}
} //下滑
function mLeft() {
for (w = 0; w < a.length; w++) {
j = 0;
i = 1;
for (i = 1; i < a[w].length; i++)
if (a[w][i] > 0) {
if (a[w][j] == 0) {
a[w][j] = a[w][i];
a[w][i] = 0;
} else
if (a[w][i] == a[w][j]) {
a[w][j] *= 2;
a[w][i] = 0;
j++;
j++;
if (j < i) {
a[w][j] = a[w][i]
a[w][i] = 0;
score = a[i][j];
}
}
}
}
}
</script>
</body>
</html>
大佬可以帮我补齐getsocre()和isGameOver()这个了 使它可以在网页上输出实时显示分数和提示游戏结束 拜谢大佬!!!