推箱子代码

<SCRIPT LANGUAGE="JavaScript">
<!--
var mappath = new Array(
"11111111111111111111",
"10000000000000000001",
"10010000000000000001",
"10010020000000000001",
"10010000000000000301",
"10010111110000003001",
"10000001000000000301",
"10000001000010000001",
"10000001000000000001",
"10000001000000111001",
"10000000000000000001",
"10000000011110000001",
"10020200000000000001",
"10000000000000000001",
"11111111111111111111"
)                   // 初始化地图信息,0代表移动区域,1代表固定区域,2代表箱子的位置,3代表箱子最终位置

var mapData =new Array(15);
var pboxX=0;
pboxY=0;
var winbox=0;

function readMap(){        // 读取地图信息
for(var i=0;i<15;i++){
mapData[i]=new Array(20);
for(var j=0;j<20;j++){
mapData[i][j]=mappath[i].substr(j,1);
}
}
}

function CreateMap(){      // 创建地图
var x=30;
var y=30;
var cbox=0;
for (var i=0;i<15;i++){    // 循环出地图的高
for (var j=0;j<20;j++){    // 循环出地图的宽
var oe=document.createElement("div");
oe.id="box"+i+"_"+j;
oe.className="map"+mapData[i][j];
oe.style.pixelLeft=x;
oe.style.pixelTop=y;
gameArea.appendChild(oe);
x+=19;
}
y+=19;
x=30;
}
}

function move(dir){             // 移动函数
var dx=0;
var dy=0;
if(dir=="Left") dx=-1;
if(dir=="Right") dx=1;
if(dir=="Up") dy=-1;
if(dir=="Down") dy=1;
if(mapData[pboxY+dy][pboxX+dx]=="1" ) return;
if(mapData[pboxY+dy][pboxX+dx]=="2" ) {
if(mapData[pboxY+dy*2][pboxX+dx*2]=="0" || mapData[pboxY+dy*2][pboxX+dx*2]=="3"){
if(mapData[pboxY+dy*2][pboxX+dx*2]=="3"){
mapData[pboxY+dy*2][pboxX+dx*2]="1";
winbox++;
if(winbox==3) win();            // 如果三个箱子全部到位则获胜
}
else
mapData[pboxY+dy*2][pboxX+dx*2]="2";
mapData[pboxY+dy][pboxX+dx]="0";
eval("box"+(pboxY+dy)+"_"+(pboxX+dx)).style.backgroundColor='#333333';      // 移动路线的颜色
eval("box"+(pboxY+dy*2)+"_"+(pboxX+dx*2)).style.backgroundColor='#3333FF';  // 移动箱子的颜色
pboxX+=dx;
pboxY+=dy;
pbox.style.pixelLeft+=dx*19;
pbox.style.pixelTop+=dy*19;
}
}else{
pboxX+=dx;
pboxY+=dy;
pbox.style.pixelLeft+=dx*19;
pbox.style.pixelTop+=dy*19;
}
}

function win(){                // 获胜过关
alert("您已经过关!");
}

function fnKeydown(){          // 控制键盘按键
var key=event.keyCode;
switch(key){
case 37:                       // 向左移动
move("Left");
break;
case 39:                       // 向右移动
move("Right");
break;
case 38:                       // 向上移动
move("Up");
break;
case 40:                       // 向下移动
move("Down");
break;
}
return false;
}

function init(){               // 页面加载的函数
readMap();                     // 读取地图信息
CreateMap();                   // 创建地图
pbox.style.pixelLeft=49;       // 初始化推箱人的位置
pbox.style.pixelTop=49;
pboxX=1;
pboxY=1;
}
document.οnkeydοwn=fnKeydown;  // 鼠标按下触发函数
//-->
</script>

<STYLE TYPE="text/css">
.map0{position:absolute;border:1px solid #999999;width:20;height:20;background-color:#333333}
.map1{position:absolute;border:2px outset #FFFFFF;width:20;height:20;background-color:#999999}
.map2{position:absolute;border:1px solid #999999;width:20;height:20;background-color:#3333FF}
.map3{position:absolute;border:0px solid #999999;width:20;height:20;background-color:#006600}
.box{position:absolute;border:1px outset #ffffff;width:20;height:20;background-color:#0000cc}
}
</STYLE>

<body bgColor=#333333 οnlοad="init()">
<div id=gameArea></div>
<div id="pbox" style="position:absolute"><img src="boy.gif" height=14 width=20></div>
</body>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值