二唯地图障碍物检测

 package adreamstar{
import flash.display.Sprite;
import flash.events.KeyboardEvent;
import flash.events.Event;
public class TestWay extends Sprite {
  private var updir:Boolean=false;
  private var downdir:Boolean=false;
  private var rightdir:Boolean=false;
  private var leftdir:Boolean=false;
  private var x0:Number=0;
  private var y0:Number=0;
  /*0表示可通过,1表示障碍物*/
  private var mapArray:Array=[[0,0,0,0,0,0,1,1,0,1],
  [1,0,0,1,0,0,0,0,1,0],
  [0,0,0,0,0,1,0,1,0,1],
  [1,0,0,0,1,0,0,0,0,1],
  [0,0,0,1,0,0,1,0,1,0],];
  public function TestWay():void {
   initModel();
   stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
            stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
   addEventListener(Event.ENTER_FRAME,enterFrameHandler);
  }
  private function initModel():void {
   for (var i:Number=0; i<5; i++) {
    for (var j:Number=0; j<10; j++) {
     if (mapArray[i][j]==0) {
      var way:Way=new Way();
      way.x=i*22+100;
      way.y=j*22+100;
      addChild(way);
     } else {
      var block:Block=new Block();
      block.x=i*22+100;
      block.y=j*22+100;
      addChild(block);
     }
    }
   
   }
   var mc:Mc=new Mc();
   mc.x=100;
   mc.y=100;
   addChild(mc).name="mc0";
  }
  private function keyDownHandler(evt:KeyboardEvent):void{
   if(evt.keyCode==37){
    leftdir=true;
   }
   if(evt.keyCode==38){
    updir=true;
   }
   if(evt.keyCode==39){
    rightdir=true;
   }
   if(evt.keyCode==40){
    downdir=true;
   }
  }
  private function keyUpHandler(evt:KeyboardEvent):void{
   if(evt.keyCode==37){
    leftdir=false;
   }
   if(evt.keyCode==38){
    updir=false;
   }
   if(evt.keyCode==39){
    rightdir=false;
   }
   if(evt.keyCode==40){
    downdir=false;
   }
  }
  private function enterFrameHandler(evt:Event):void{
   /*设定移动范围*/
   if(leftdir && x0>0){
    x0-=1;
    if(mapArray[x0][y0]==0){
    getChildByName("mc0").x-=22;
    } else{
     x0+=1;
    }
   }
   if(updir && y0>0){
    y0-=1;
    if(mapArray[x0][y0]==0){
    getChildByName("mc0").y-=22;
    } else{
     y0+=1;
    }
   }
   if(rightdir && x0<4){
    x0+=1;
    if(mapArray[x0][y0]==0){
     getChildByName("mc0").x+=22;
    }else{
    x0-=1;
   
    }
   
   
   }
   if(downdir && y0<9){
    y0+=1;
    if(mapArray[x0][y0]==0){
    getChildByName("mc0").y+=22;
    } else{
     y0-=1;
    }
   }
   
  }
   
}
}

源文件下载:http://space.flash8.net/bbs/viewthread.php?tid=351277&extra=page%3D1&frombbs=1

下面增加了随机生成10*10到 20*20地图的功能,代码把上面的代码覆盖就行了

package adreamstar{
 import flash.display.Sprite;
 import flash.events.KeyboardEvent;
 import flash.events.Event;
 public class TestWay extends Sprite {
  private var updir:Boolean=false;
  private var downdir:Boolean=false;
  private var rightdir:Boolean=false;
  private var leftdir:Boolean=false;
  private var hang:int;
  private var lie:int;
  private var x0:Number=0;
  private var y0:Number=0;
  /*0表示可通过,1表示障碍物*/
  private var mapArray:Array;
  public function TestWay():void {
   hang=Math.floor(Math.random()*10+10);
   lie=Math.floor(Math.random()*10+10);
   mapArray=new Array();
   for(var i:Number=0;i<hang;i++){
    mapArray[i]=new Array();
    for(var j:Number=0;j<lie;j++){
     if(Math.random()*10<8){
     mapArray[i][j]=0;
     } else{
      mapArray[i][j]=1;
     }
     
    }
   }
   initModel();
   stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
            stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
   addEventListener(Event.ENTER_FRAME,enterFrameHandler);
  }
  private function initModel():void {
   for (var i:Number=0; i<hang; i++) {
    for (var j:Number=0; j<lie; j++) {
     if (mapArray[i][j]==0) {
      var way:Way=new Way();
      way.x=i*22+50;
      way.y=j*22+50;
      addChild(way);
     } else {
      var block:Block=new Block();
      block.x=i*22+50;
      block.y=j*22+50;
      addChild(block);
     }
    }
    
   }
   var mc:Mc=new Mc();
   mc.x=50;
   mc.y=50;
   addChild(mc).name="mc0";
  }
  private function keyDownHandler(evt:KeyboardEvent):void{
   if(evt.keyCode==37){
    leftdir=true;
   }
   if(evt.keyCode==38){
    updir=true;
   }
   if(evt.keyCode==39){
    rightdir=true;
   }
   if(evt.keyCode==40){
    downdir=true;
   }
  }
  private function keyUpHandler(evt:KeyboardEvent):void{
   if(evt.keyCode==37){
    leftdir=false;
   }
   if(evt.keyCode==38){
    updir=false;
   }
   if(evt.keyCode==39){
    rightdir=false;
   }
   if(evt.keyCode==40){
    downdir=false;
   }
  }
  private function enterFrameHandler(evt:Event):void{
   /*设定移动范围*/
   if(leftdir && x0>0){
    x0-=1;
    if(mapArray[x0][y0]==0){
    getChildByName("mc0").x-=22;
    } else{
     x0+=1;
    }
   }
   if(updir && y0>0){
    y0-=1;
    if(mapArray[x0][y0]==0){
    getChildByName("mc0").y-=22;
    } else{
     y0+=1;
    }
   }
   if(rightdir && x0<hang-1){
    x0+=1;
    if(mapArray[x0][y0]==0){
     getChildByName("mc0").x+=22;
    }else{
    x0-=1;
    
    }
    
    
   }
   if(downdir && y0<lie-1){
    y0+=1;
    if(mapArray[x0][y0]==0){
    getChildByName("mc0").y+=22;
    } else{
     y0-=1;
    }
   }
   
  }
    
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值