新的一年到了,我想把自己编的一段js代码作为贺卡送给大家,以答谢往日里给了我那
么多帮助的朋友们。去年刚开始学做网页时我就想,是否能把以前用vb编的小游戏做到
页面上?经过一年的摸索,似乎手底下有了一点儿把握,于是把老游戏“马走日”拉到
了页面上。这是我的第一个js程序,说实话,看到它能在页面上运行,心里是很高兴
的,希望朋友们能分享我的这份喜悦。程序中有详细的注释,游戏可以在我的网站上运
行,也可以从我的网站上下载,有什么不足之处,请给我留言。谢谢平日里朋友们给我
的帮助和鼓励,祝大家新年好!

[url]http://lixt127.512j.com[/url] 点字母r

<script language=javascript>         
//1.定义变量
var mouse_y;            //鼠标坐标
var mouse_x;  
var s;                  //鼠标down时所在棋格横格数-1   
var t;                  //鼠标down时所在棋格纵格数-1
var s0=0;               //马跳的前一格的横格数-1 
var t0=0;               //马跳的前一格的纵格数-1
var r=0;                //第几步
var maee=0;             //第1步控制变量
var bu0=0;              //示范63步时的步数
mastep=new Array();
for(var i=0;i<66;i++){  //数字图片数组
mastep[i]=new Image();
mastep[i].src="img_ma/horse_2ma"+i+".bmp";
}
var qipan=new Array();  //棋盘每个格对应的数组
for(var i=1;i<65;i++)   //给这个数组赋初值
qipan[i]=0;
var bu63="8,4,7,2,5,1,6,3,7,5,8,7,6,6,7,8,8,6,7,4,8,2,6,1,7,3,8,5,6,4,7,6,8,8,6,7
,5,5,4,3,6,2,8,3,7,1,5,2,3,1,1,2,2,4,3,6,4,8,5,6,6,8,4,7,3,5,5,4,4,2,2,1,3,3,
4,5,5,7,3,8,1,7,2,5,4,4,6,5,7,7,5,8,4,6,2,7,1,5,2,3,1,1,3,2,1,3,3,4,5,3,4,1,2
,2,1,4,2,6,1,8,3,7,1,6,2,8";
var bu=new Array();     //63步数组
for(var i=1;i<64;i++)
bu=bu63.split(",");
//2.棋盘 
document.write('<div style="position:absolute;top:9;left:9">');
for(var i=1;i<9;i++){
for(var j=1;j<9;j++){
document.write('<img src="img_ma/horse_2mm.bmp" width=40 height=40 border="0">');
}
document.write("
");
}
document.write("</div>");
//3.棋子ma,数字图片在棋子ma下面
for(var i=0;i<66;i++)
document.write('<img id="idstep" src='+mastep[i].src+' style="position:absolute;top:10;left:350" >');
document.write('<img id="idma" src="img_ma/horse_2maM.bmp" style="position:absolute;top:10;left:350" >');
//4.函数1
function start0(){      //初始状态
for(var i=0;i<66;i++){
idstep[i].style.posLeft=350;
idstep[i].style.posTop=10;
qipan[i]=0
}
idma.style.posLeft=350;        
idma.style.posTop=10;
r=0;
maee=0;
}
//函数2
function down(){      //down()开始
mouse_y = event.y;      //鼠标位置
mouse_x = event.x;
if(mouse_x>10 & mouse_x<330 & mouse_y>10 & mouse_y<330){//如果在棋盘内点击
s=(mouse_x-10-(mouse_x-10)%40)/40; //被点击的格
t=(mouse_y-10-(mouse_y-10)%40)/40;
if(maee==0){           //第一步
start0();
maee=1;
idma.style.posLeft=s*40+10;        //图片M初始位置  
idma.style.posTop=t*40+10;
qipan[t*8+s+1]=1;
s0=s;
t0=t;
}//第一步结束
else{
if(qipan[t*8+s+1]==0){  //如果是空格
var ss=s-s0;
var tt=t-t0;
if(ss==2 & tt==-1 || ss==1 & tt==-2 || ss==-1 & tt==-2 || ss==-2 & tt==-1 ||
 ss==-2 & tt==1 ||ss==-1 & tt==2 || ss==1 & tt==2 || ss==2 & tt==1){  //如果走日
idma.style.posLeft=s*40+10;        //图片M位置
idma.style.posTop=t*40+10;
r=r+1;
idstep[r].style.posLeft=s0*40+10;  //数字图片r的位置
idstep[r].style.posTop=t0*40+10;
qipan[t*8+s+1]=1;
s0=s;
t0=t;
} //如果走日
} //如果是空格
} //else
} //如果在棋盘内点击
if(mouse_x>340 & mouse_x<450 & mouse_y>315& mouse_y<325){ //如果点63步
start0();
bubu();
} //如果点63步
if(mouse_x>350 & mouse_x<390 & mouse_y>10 & mouse_y<50){   //如果点重新开始
start0();
}
} //down()结束 
//函数3
function bubu(){ 
idma.style.posLeft=(bu[bu0*2+1]-1)*40+10;        
idma.style.posTop=(bu[bu0*2]-1)*40+10;
idstep[bu0+1].style.posLeft=(bu[bu0*2+1]-1)*40+10;
idstep[bu0+1].style.posTop=(bu[bu0*2]-1)*40+10;
bu0++;
if(bu0<63)
setTimeout('bubu()',600);   //每0.6秒走一步
else
bu0=0;
}
document.onmousedown=down;  //鼠标的down事件,调函数down()
</script>