JavaScript 寫遊戲 : 搬運工[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 dewin 的 blog

}

 

 

 

function move1(x,y,k){
if(k != null){
 backrecord[++count] = k
 backrecord.length = count+1
 }
man.x = x+parseint(man.x);
man.y = y+parseint(man.y);
man.style.left = man.x*mapw;
man.style.top = man.y*maph;
}

 

 


function move2(obj,x,y){
obj.style.left = (x+man.x)*mapw;
obj.style.top = (y+man.y)*maph;
mainmap[y+parseint(man.y)][x+parseint(man.x)] = obj;
if(obj.complete == 0) mainmap[man.y][man.x]=' ';
else{
 mainmap[man.y][man.x] = '.';
 boxcompletes --;
 }
obj.complete = 0;
}

function move3(obj,x,y){
obj.style.left = (x+man.x)*mapw;
obj.style.top = (y+man.y)*maph;
mainmap[y+parseint(man.y)][x+parseint(man.x)] = obj;
if(obj.complete == 1) mainmap[man.y][man.x]='.';
else{
 mainmap[man.y][man.x] = ' ';
 if(++boxcompletes == totalbox) owin();
 }
obj.complete = 1;
}


function undo(){
if(count >= 0){
 canmove = true
 switch(backrecord[count]){
  //not object
  case 'l':move1(1,0);break;//left -> right
  case 'u':move1(0,1);break;//up -> down
  case 'r':move1(-1,0);break;//right -> left
  case 'd':move1(0,-1);break;//down -> up
  //object
  case 'l':ungo(1,0);break;//left -> right
  case 'u':ungo(0,1);break;//up -> down
  case 'r':ungo(-1,0);break;//right -> left
  case 'd':ungo(0,-1);break;//down -> up
  }
 iselects(--count)
 }
}


function ungo(x,y){
boxmoves--;
var obj = mainmap[-y+parseint(man.y)][-x+parseint(man.x)];
if(mainmap[man.y][man.x]==' '){
 if(obj.complete == 0)mainmap[-y+parseint(man.y)][-x+parseint(man.x)]=' ';
 else{
  mainmap[-y+parseint(man.y)][-x+parseint(man.x)]='.';
  boxcompletes --;
  }
 obj.complete=0
 }
else{
 if(obj.complete == 0){
  mainmap[-y+parseint(man.y)][-x+parseint(man.x)]=' ';
  if(++boxcompletes == totalbox) owin();
  }
 else mainmap[-y+parseint(man.y)][-x+parseint(man.x)]='.';
 obj.complete=1
 }
obj.style.left = man.x*mapw;
obj.style.top = man.y*maph;
mainmap[man.y][man.x] = obj;
move1(x,y);
}


function redo(){
if(count+1<backrecord.length){
 switch(backrecord[++count]){
  case 'l': case 'l': dir(-1,0);break;//left
  case 'u': case 'u': dir(0,-1);break;//up
  case 'r': case 'r': dir(1,0);break;//right
  case 'd': case 'd': dir(0,1);break;//down
  }
 iselects(count)
 }
else clearinterval(timer);
}

 


function owin(){
canmove = false
alert('congratulation! you have pass.')
}

 

 


function window.onload(){
readmap(0);
document.body.scroll='no'

function document.onkeydown(){
if(event.ctrlkey){
 switch(event.keycode){
  case 37:document.body.scrollleft-=pushscrollno;break;//left
  case 38:document.body.scrolltop-=pushscrollno;break;//up
  case 39:document.body.scrollleft+=pushscrollno;break;//right
  case 40:document.body.scrolltop+=pushscrollno;break;//down
  }
 }
else{
 switch(event.keycode){
  case 37:dir(-1,0,'l');break;//left
  case 38:dir(0,-1,'u');break;//up
  case 39:dir(1,0,'r');break;//right
  case 40:dir(0,1,'d');break;//down
  }
 event.returnvalue = false;
 info.value = backrecord.join("")
 iselects(count)
 }
}

function document.onclick(){redo()}
function document.oncontextmenu(){undo();event.returnvalue = false;}

window.focus();
base.focus();
}

 

 

function run(){
var temp = info.value;
if(temp == '')return;
readmap(0);
backrecord=temp.split("")
timer = setinterval(redo,replaytime)
}

function iselects(x){
var irange = info.createtextrange()
irange.collapse(true)
irange.movestart("character",x)
irange.moveend("character",1)
irange.select()
boxmoveinfo.value = boxmoves;
manmoveinfo.value = x+1;
}
</script>

本文关键:搬运工,搬運工,遊戲,游戏,javascript,jscript,dewin,dwin,js
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top