gistfile1.txt //1,主角:mainhero2,可行走地面:thefloor3,墙壁(砖块)wall4,,不可破坏墙壁:stone5,游走怪物:monster6,终点门:thedoor//7,爆炸效果:boom8,炸弹:bomb9,放置炸弹动作 putbomb//所用到的方法
//1,主角:mainhero 2,可行走地面:thefloor 3,墙壁(砖块)wall 4,,不可破坏墙壁:stone 5,游走怪物:monster 6,终点门:thedoor
//7,爆炸效果:boom 8,炸弹:bomb 9,放置炸弹动作 putbomb
//所用到的方法
//所用到的变量
//定义初始变量
var mainhero=new Object();//为了确定人物坐标而不是单纯的定义人物
var maps;//定义所有地图的一个数组
var current=0;//当前关卡数
var map;//当前关卡地图
var thedoor;//目的地
var monsterlist=new Array();
var starslist=new Array();
var starsnum;
var bomb=new Object();
var showbombs;
//跳关方法
function jump()
{
var jumpplace=document.getElementById("text1").value;
current=jumpplace-1;
init();
}
//初始化地图界面
function init()
{
var bgm1=document.getElementById("bgm1");
bgm1.innerHTML='';
showbombs=10;
document.getElementById("span1").innerHTML=showbombs;
onloaddata()
onloadmap()
mon1(monsterlist[0].x,monsterlist[0].y)
mon2(monsterlist[1].x,monsterlist[1].y)
mon3(monsterlist[2].x,monsterlist[2].y)
mon4(monsterlist[3].x,monsterlist[3].y)
mon5(monsterlist[4].x,monsterlist[4].y)
mon6(monsterlist[5].x,monsterlist[5].y)
}
var mainptx;
var mainpty;
var hc=0;//此变量用来限制炸弹放置次数,当满足值为0时才可放下炸弹,放下炸弹后将值赋为1,炸弹爆炸结束后将值赋为零
//键盘按下事件
//上 38、下 40、左 37、右 39、放置炸弹(Ctrl)17
function keydown(event)
{
var nextpoint=new Object();
switch(event.keyCode)
{
case 38:
nextpoint.x=mainhero.x;
nextpoint.y=mainhero.y-1;
walkpoint(nextpoint.x,nextpoint.y);
break;
case 40:
nextpoint.x=mainhero.x;
nextpoint.y=mainhero.y+1;
walkpoint(nextpoint.x,nextpoint.y);
break;
case 37:
nextpoint.x=mainhero.x-1;
nextpoint.y=mainhero.y;
walkpoint(nextpoint.x,nextpoint.y);
break;
case 39:
nextpoint.x=mainhero.x+1;
nextpoint.y=mainhero.y;
walkpoint(nextpoint.x,nextpoint.y);
break;
case 17:
if(showbombs>0)
{
if(hc==0)
{
putbomb(mainhero.x,mainhero.y);
hc=1;
showbombs=showbombs-1;
document.getElementById("span1").innerHTML=showbombs;
}
}
break;
}
backbomb();
}
//人物行走下一个位置(可行走地面2、可破坏墙壁3、不可破坏墙壁4、怪物5、终点门6、)【碰到炸弹不让他通过,对啊~】
function walkpoint(nptx,npty)
{
switch(map[npty][nptx])
{
case 2:
document.getElementById(nptx+"-"+npty).src="img/1.png";
document.getElementById(mainhero.x+"-"+mainhero.y).src="img/2.png";
mainptx=mainhero.x;//这两步用来存值
mainpty=mainhero.y;
//修改源数组数据
map[npty][nptx]=1;
map[mainhero.y][mainhero.x]=2;
//刷新地图数据主角位置
mainhero.x=nptx;
mainhero.y=npty;
break;
case 3:
break;
case 4:
break;
case 5:
document.getElementById(nptx+"-"+npty).src="img/7.png";//爆炸效果
document.getElementById(mainhero.x+"-"+mainhero.y).src="img/2.png";
//修改源数组数据
map[npty][nptx]=7;
map[mainhero.y][mainhero.x]=2;
//刷新地图数据主角位置【哦后来发现不需要了
//mainhero.x=npty;
//mainhero.y=npty;
var abc=0;
gameover(abc);
break;
case 6:
passgame();
break;
case 7:
document.getElementById(nptx+"-"+npty).src="img/7.png";
document.getElementById(mainhero.x+"-"+mainhero.y).src="img/2.png";
setTimeout('gameover(0)',500);
break;
case 12:
var bgm3=document.getElementById("bgm3");//播放音效
bgm3.innerHTML='';
document.getElementById(nptx+"-"+npty).src="img/1.png";
document.getElementById(mainhero.x+"-"+mainhero.y).src="img/2.png";
//修改源数组数据
map[npty][nptx]=1;
map[mainhero.y][mainhero.x]=2;
//刷新地图数据主角位置
mainhero.x=nptx;
mainhero.y=npty;
starsnum=starsnum-1//用来判断过关收集要素
document.getElementById("span2").innerHTML=starsnum;
break;
}
}
//还原炸弹的方法
function backbomb()
{
if(mainptx==bomb.x&&mainpty==bomb.y)
{
document.getElementById(mainptx+"-"+mainpty).src="img/8.png";
map[mainpty][mainptx]=8;
}
}
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓怪物部分↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//第一个怪物的移动方法,先往上再往下
var mx1;
var my1;
var sid1;
var nmx1;
var nmy1;
var changes1=1;
function mon1(mon1x,mon1y)
{
mx1=mon1x;
my1=mon1y;
change1(changes1);
sid1=setTimeout('move1()',400);
}
//切换上下的方法
function change1(changes1)
{
if(changes1==1)
{
nmx1=mx1;
nmy1=my1-1;
}else
{
nmx1=mx1;
nmy1=my1+1;
}
}
function move1()
{
clearTimeout(sid1);
if(map[nmy1][nmx1]==2)
{
document.getElementById(nmx1+"-"+nmy1).src="img/5.png";
document.getElementById(mx1+"-"+my1).src="img/2.png";
//修改源数组数据
map[nmy1][nmx1]=5;
map[my1][mx1]=2;
//刷新地图数据(怪物坐标)
mx1=nmx1;
my1=nmy1;
//再次调用行走方法进行判断
mon1(mx1,my1);
}else if(map[nmy1][nmx1]==1)
{
document.getElementById(nmx1+"-"+nmy1).src="img/7.png";
document.getElementById(mx1+"-"+my1).src="img/2.png";
gameover(0);
}else if(map[nmy1][nmx1]==7)
{
document.getElementById(nmx1+"-"+nmy1).src="img/7.png";
document.getElementById(mx1+"-"+my1).src="img/2.png";
//修改源数组数据
map[nmy1][nmx1]=7;
map[my1][mx1]=2;
}else
{
changes1=changes1*-1;
mon1(mx1,my1);
}
}
//第2个怪物的移动方法,先往上再往下
var mx2;
var my2;
var sid2;
var nmx2;
var nmy2;
var changes2=1;
function mon2(mon2x,mon2y)
{
mx2=mon2x;
my2=mon2y;
change2(changes2);
sid2=setTimeout('move2()',400);
}
//切换上下的方法
function change2(changes2)
{
if(changes2==1)
{
nmx2=mx2;
nmy2=my2-1;
}else
{
nmx2=mx2;
nmy2=my2+1;
}
}
function move2()
{
clearTimeout(sid2);
if(map[nmy2][nmx2]==2)
{
document.getElementById(nmx2+"-"+nmy2).src="img/5.png";
document.getElementById(mx2+"-"+my2).src="img/2.png";
//修改源数组数据
map[nmy2][nmx2]=5;
map[my2][mx2]=2;
//刷新地图数据(怪物坐标)
mx2=nmx2;
my2=nmy2;
//再次调用行走方法进行判断
mon2(mx2,my2);
}else if(map[nmy2][nmx2]==1)
{
document.getElementById(nmx2+"-"+nmy2).src="img/7.png";
document.getElementById(mx2+"-"+my2).src="img/2.png";
gameover(0);
}else if(map[nmy2][nmx2]==7)
{
document.getElementById(nmx2+"-"+nmy2).src="img/7.png";
document.getElementById(mx2+"-"+my2).src="img/2.png";
//修改源数组数据
map[nmy2][nmx2]=7;
map[my2][mx2]=2;
}else
{
changes2=changes2*-1;
mon2(mx2,my2);
}
}
//第3个怪物的移动方法,先往上再往下
var mx3;
var my3;
var sid3;
var nmx3;
var nmy3;
var changes3=1;
function mon3(mon3x,mon3y)
{
mx3=mon3x;
my3=mon3y;
change3(changes3);
sid3=setTimeout('move3()',400);
}
//切换上下的方法
function change3(changes3)
{
if(changes3==1)
{
nmx3=mx3;
nmy3=my3-1;
}else
{
nmx3=mx3;
nmy3=my3+1;
}
}
function move3()
{
clearTimeout(sid3);
if(map[nmy3][nmx3]==2)
{
document.getElementById(nmx3+"-"+nmy3).src="img/5.png";
document.getElementById(mx3+"-"+my3).src="img/2.png";
//修改源数组数据
map[nmy3][nmx3]=5;
map[my3][mx3]=2;
//刷新地图数据(怪物坐标)
mx3=nmx3;
my3=nmy3;
//再次调用行走方法进行判断
mon3(mx3,my3);
}else if(map[nmy3][nmx3]==1)
{
document.getElementById(nmx3+"-"+nmy3).src="img/7.png";
document.getElementById(mx3+"-"+my3).src="img/2.png";
gameover(0);
}else if(map[nmy3][nmx3]==7)
{
document.getElementById(nmx3+"-"+nmy3).src="img/7.png";
document.getElementById(mx3+"-"+my3).src="img/2.png";
//修改源数组数据
map[nmy3][nmx3]=7;
map[my3][mx3]=2;
}else
{
changes3=changes3*-1;
mon3(mx3,my3);
}
}
//第4个怪物的移动方法,先往上再往下
var mx4;
var my4;
var sid4;
var nmx4;
var nmy4;
var changes4=1;
function mon4(mon4x,mon4y)
{
mx4=mon4x;
my4=mon4y;
change4(changes4);
sid4=setTimeout('move4()',400);
}
//切换上下的方法
function change4(changes4)
{
if(changes4==1)
{
nmx4=mx4;
nmy4=my4-1;
}else
{
nmx4=mx4;
nmy4=my4+1;
}
}
function move4()
{
clearTimeout(sid4);
if(map[nmy4][nmx4]==2)
{
document.getElementById(nmx4+"-"+nmy4).src="img/5.png";
document.getElementById(mx4+"-"+my4).src="img/2.png";
//修改源数组数据
map[nmy4][nmx4]=5;
map[my4][mx4]=2;
//刷新地图数据(怪物坐标)
mx4=nmx4;
my4=nmy4;
//再次调用行走方法进行判断
mon4(mx4,my4);
}else if(map[nmy4][nmx4]==1)
{
document.getElementById(nmx4+"-"+nmy4).src="img/7.png";
document.getElementById(mx4+"-"+my4).src="img/2.png";
gameover(0);
}else if(map[nmy4][nmx4]==7)
{
document.getElementById(nmx4+"-"+nmy4).src="img/7.png";
document.getElementById(mx4+"-"+my4).src="img/2.png";
//修改源数组数据
map[nmy4][nmx4]=7;
map[my4][mx4]=2;
}else
{
changes4=changes4*-1;
mon4(mx4,my4);
}
}
//第5个怪物的移动方法,先往上再往下
var mx5;
var my5;
var sid5;
var nmx5;
var nmy5;
var changes5=1;
function mon5(mon5x,mon5y)
{
mx5=mon5x;
my5=mon5y;
change5(changes5);
sid5=setTimeout('move5()',400);
}
//切换上下的方法
function change5(changes5)
{
if(changes5==1)
{
nmx5=mx5;
nmy5=my5-1;
}else
{
nmx5=mx5;
nmy5=my5+1;
}
}
function move5()
{
clearTimeout(sid5);
if(map[nmy5][nmx5]==2)
{
document.getElementById(nmx5+"-"+nmy5).src="img/5.png";
document.getElementById(mx5+"-"+my5).src="img/2.png";
//修改源数组数据
map[nmy5][nmx5]=5;
map[my5][mx5]=2;
//刷新地图数据(怪物坐标)
mx5=nmx5;
my5=nmy5;
//再次调用行走方法进行判断
mon5(mx5,my5);
}else if(map[nmy5][nmx5]==1)
{
document.getElementById(nmx5+"-"+nmy5).src="img/7.png";
document.getElementById(mx5+"-"+my5).src="img/2.png";
gameover(0);
}else if(map[nmy5][nmx5]==7)
{
document.getElementById(nmx5+"-"+nmy5).src="img/7.png";
document.getElementById(mx5+"-"+my5).src="img/2.png";
//修改源数组数据
map[nmy5][nmx5]=7;
map[my5][mx5]=2;
}else
{
changes5=changes5*-1;
mon5(mx5,my5);
}
}
//第6个怪物的移动方法,先往上再往下
var mx6;
var my6;
var sid6;
var nmx6;
var nmy6;
var changes6=1;
function mon6(mon6x,mon6y)
{
mx6=mon6x;
my6=mon6y;
change6(changes6);
sid6=setTimeout('move6()',400);
}
//切换上下的方法
function change6(changes6)
{
if(changes6==1)
{
nmx6=mx6;
nmy6=my6-1;
}else
{
nmx6=mx6;
nmy6=my6+1;
}
}
function move6()
{
clearTimeout(sid6);
if(map[nmy6][nmx6]==2)
{
document.getElementById(nmx6+"-"+nmy6).src="img/5.png";
document.getElementById(mx6+"-"+my6).src="img/2.png";
//修改源数组数据
map[nmy6][nmx6]=5;
map[my6][mx6]=2;
//刷新地图数据(怪物坐标)
mx6=nmx6;
my6=nmy6;
//再次调用行走方法进行判断
mon6(mx6,my6);
}else if(map[nmy6][nmx6]==1)
{
document.getElementById(nmx6+"-"+nmy6).src="img/7.png";
document.getElementById(mx6+"-"+my6).src="img/2.png";
gameover(0);
}else if(map[nmy6][nmx6]==7)
{
document.getElementById(nmx6+"-"+nmy6).src="img/7.png";
document.getElementById(mx6+"-"+my6).src="img/2.png";
//修改源数组数据
map[nmy6][nmx6]=7;
map[my6][mx6]=2;
}else
{
changes6=changes6*-1;
mon6(mx6,my6);
}
}
//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑怪物部分↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//放置炸弹
function putbomb(mpx,mpy)
{
document.getElementById(mpx+"-"+mpy).src="img/9.png";
bomb.x=mpx;
bomb.y=mpy;
setTimeout('judge()',2000);
}
//判断炸弹周围的东西
function judge()
{
document.getElementById(bomb.x+"-"+bomb.y).src="img/7.png";
placex=bomb.x-1;
placey=bomb.y;
startboom(placex,placey);
placex=bomb.x+1;
placey=bomb.y;
startboom(placex,placey);
placex=bomb.x;
placey=bomb.y-1;
startboom(placex,placey);
placex=bomb.x;
placey=bomb.y+1;
startboom(placex,placey);
}
//炸弹开始爆炸,及范围内一切东西都变成火花,
//除了4(不可破坏墙壁)6(终点门)
//墙壁(3)怪物(5)
//人物——游戏结束
function startboom(placex,placey)
{
var bgm2=document.getElementById("bgm2");//播放音效
bgm2.innerHTML='';
switch(map[placey][placex])
{
case 1:
map[bomb.y][bomb.x]=7;
document.getElementById(placex+"-"+placey).src="img/7.png";
map[placey][placex]=7;
setTimeout('gameover(0)',500);
break;
case 2:
map[bomb.y][bomb.x]=7;
document.getElementById(placex+"-"+placey).src="img/7.png";
map[placey][placex]=7;
break;
case 3:
map[bomb.y][bomb.x]=7;
document.getElementById(placex+"-"+placey).src="img/7.png";
map[placey][placex]=7;
break;
case 4:
break;
case 5:
map[bomb.y][bomb.x]=7;
document.getElementById(placex+"-"+placey).src="img/7.png";
map[placey][placex]=7;
break;
case 6:
break;
}
setTimeout('stopboom()',1000);
}
//炸弹爆炸结束
function stopboom()
{
for(var i=0;i
