一、求一javascript小游戏代码。【注:不要叫我去下载,你直接给我复制过来就可以了】。thank!!
代码比较长 没有注释
脚本说明:
把如下代码加入<body>区域中
<style>
.bigcell {
background-color:#aa9966;
border:4px solid #aa9966;
text-align:center;
}
.cell {
width:40px;
height:40px;
font-family:verdana, arial;
font-size:10pt;
font-weight:bold;
background-color:#996633;
color:#ffff33;
border-top:2px solid #aa9966;
border-left:2px solid #aa9966;
border-right:2px solid #663300;
border-bottom:2px solid #663300;
text-align:center;
}
.hole {
width:40px;
height:40px;
background-color:#aa9966;
text-align:center;
}
body,h1,h2,h3,.msg,capt1,capt2 {font-family:verdana,comic sans ms,arial;}
body {margin:0px;}
h1 {font-size:28pt; font-weight:bold; margin-bottom:0px;}
h2 {font-size:16pt; margin:0px; font-weight:bold;}
h3 {font-size:8pt; margin:0px; font-weight:bold;}
.msg {font-size:8pt; font-weight:bold;}
.tab {cursor:hand;}
.capt1 {font-size:10pt; font-weight:bold;}
.capt2 {font-size:9pt; font-weight:bold;}
.capt3 {font-size:14pt; font-weight:bold; color:yellow;}
.capt4 {font-size:10pt; font-weight:bold; color:yellow;}
.but {font-size:9pt; font-weight:bold; height:30px;background-color:#aaaa99;}
</style>
<body onload="loadboard(4)">
<script>
var gsize, ghrow, ghcol, gtime, gmoves, gintervalid=-1, gshuffling;
function togglehelp()
{
if (buthelp.value == "hide help")
{
help.style.display = "none";
buthelp.value = "show help";
}
else
{
help.style.display = "";
buthelp.value = "hide help";
}
}
//random number between low and hi
function r(low,hi)
{
return math.floor((hi-low)*math.random()+low);
}
//random number between 1 and hi
function r1(hi)
{
return math.floor((hi-1)*math.random()+1);
}
//random number between 0 and hi
function r0(hi)
{
return math.floor((hi)*math.random());
}
function startgame()
{
shuffle();
gtime = 0;
gmoves = 0;
ticktime();
gintervalid = setinterval("ticktime()",1000);
}
function stopgame()
{
if (gintervalid==-1) return;
clearinterval(gintervalid);
fldstatus.innerhtml = "";
gintervalid=-1;
}
function ticktime()
{
showstatus();
gtime++;
}
function checkwin()
{
var i, j, s;
if (gintervalid==-1) return; //game not started!
if (!ishole(gsize-1,gsize-1)) return;
for (i=0;i<gsize;i++)
for (j=0;j<gsize;j++)
{
if (!(i==gsize-1 && j==gsize-1)) //ignore last block (ideally a hole)
{
if (getvalue(i,j)!=(i*gsize+j+1).tostring()) return;
}
}
stopgame();
s = "<table cellpadding=4>";
s += "<tr><td align=center class=capt3>!! congrats !!</td></tr>";
s += "<tr class=capt4><td align=center>you have done it in " + gtime + " secs ";
s += "with " + gmoves + " moves!</td></tr>";
s += "<tr><td align=center class=capt4>your speed is " + math.round(1000*gmoves/gtime)/1000 + " moves/sec</td></tr>";
s += "</table>";
fldstatus.innerhtml = s;
// shuffle();
}
function showstatus()
{
fldstatus.innerhtml = "time: " + gtime + " secs moves: " + gmoves
}
function showtable()
{
var i, j, s;
stopgame();
s = "<table border=3 cellpadding=0 cellspacing=0 bgcolor='#666655'><tr><td class=bigcell>";
s = s + "<table border=0 cellpadding=0 cellspacing=0>";
for (i=0; i<gsize; i++)
{
s = s + "<tr>";
for (j=0; j<gsize; j++)
{
s = s + "<td id=a_" + i + "_" + j + " onclick='move(this)' class=cell>" + (i*gsize+j+1) + "</td>";
}
s = s + "</tr>";
}
s = s + "</table>";
s = s + "</td></tr></table>";
return s;
}
function getcell(row, col)
{
return eval("a_" + row + "_" + col);
}
function setvalue(row,col,val)
{
var v = getcell(row, col);
v.innerhtml = val;
v.classname = "cell";
}
function getvalue(row,col)
{
// alert(row + "," + col);
var v = getcell(row, col);
return v.innerhtml;
}
function sethole(row,col)
{
var v = getcell(row, col);
v.innerhtml = "";
v.classname = "hole";
ghrow = row;
ghcol = col;
}
function getrow(obj)
{
var a = obj.id.split("_");
return a[1];
}
function getcol(obj)
{
var a = obj.id.split("_");
return a[2];
}
function ishole(row, col)
{
return (row==ghrow && col==ghcol) ? true : false;
}
function getholeinrow(row)
{
var i;
return (row==ghrow) ? ghcol : -1;
}
function getholeincol(col)
{
var i;
return (col==ghcol) ? ghrow : -1;
}
function shiftholerow(src,dest,row)
{
var i;
//conversion to integer needed in some cases!
src = parseint(src);
dest = parseint(dest);
if (src < dest)
{
for (i=src;i<dest;i++)
{
setvalue(row,i,getvalue(row,i+1));
sethole(row,i+1);
}
}
if (dest < src)
{
for (i=src;i>dest;i--)
{
setvalue(row,i,getvalue(row,i-1));
sethole(row,i-1);
}
}
}
function shiftholecol(src,dest,col)
{
var i;
//conversion to integer needed in some cases!
src = parseint(src);
dest = parseint(dest);
if (src < dest)
{//alert("src=" + src +" dest=" + dest + " col=" + col);
for (i=src;i<dest;i++)
{//alert(parseint(i)+1);
setvalue(i,col,getvalue(i+1,col));
sethole(i+1,col);
}
}
if (dest < src)
{
for (i=src;i>dest;i--)
{
setvalue(i,col,getvalue(i-1,col));
sethole(i-1,col);
}
}
}
function move(obj)
{
var r, c, hr, hc;
if (gintervalid==-1 && !gshuffling)
{
alert('请点击"开始游戏"按钮')
return;
}
r = getrow(obj);
c = getcol(obj);
if (ishole(r,c)) return;
hc = getholeinrow(r);
if (hc != -1)
{
shiftholerow(hc,c,r);
gmoves++;
checkwin();
return;
}
hr = getholeincol(c);
if (hr != -1)
{
shiftholecol(hr,r,c);
gmoves++;
checkwin();
return;
}
}
function shuffle()
{
var t,i,j,s,frac;
gshuffling = true;
frac = 100.0/(gsize*(gsize+10));
s = "% ";
for (i=0;i<gsize;i++)
{
s += "|";
for (j=0;j<gsize+10;j++)
{
window.status = "loading " + math.round((i*(gsize+10) + j)*frac) + s
if (j%2==0)
{
t = r0(gsize);
while (t == ghrow) t = r0(gsize); //skip holes
getcell(t,ghcol).click();
}
else
{
t = r0(gsize);
while (t == ghcol) t = r0(gsize); //skip holes
getcell(ghrow,t).click();
}
}
}
window.status = "";
gshuffling = false;
}
function loadboard(size)
{
gsize = size;
board.innerhtml = showtable(gsize);
sethole(gsize-1,gsize-1);
//shuffle();
}
</script>
<div id=test></div>
<table cellpadding=4>
<tr><td align=center>
<b>请选择难度: </b>
<select id=level onchange="loadboard(parseint(level.value))">
<option value='3'>3</option>
<option value='4' selected>4</option>
<script>
for (var i=5;i<=10;i++)
{
document.write("<option value='" + i + "'>" + i + "</option>");
}
</script>
</select>
</td></tr>
<tr><td align=center>
<input type=button class=but value="开始游戏" onclick="startgame();">
<tr><td align=center id=fldstatus class=capt2>
</td></tr>
</table>
<div id=board></div>