as3迷宫游戏3.26更新

本文介绍了一个简单的迷宫游戏实现方案,玩家需要控制角色躲避障碍、收集钥匙并打开门以达到终点。文章详细展示了如何使用Flash进行游戏开发,包括地图设计、键盘事件监听及角色移动逻辑等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从左上角走到右下角

规则:深蓝色的方块代表角色,按上下左右键控制人物角色,黑色的方块代表可以通过,红色的方块代表墙,禁止通过,黄色的方块代表钥匙,捡起来了就可以开门,淡蓝色的方块代表门,只有有钥匙才能通过,一把钥匙只能通过一个门。一把钥匙只能开一个门 

源文件下载:http://download.youkuaiyun.com/source/399060

最下面是源代码:

 

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;
        
private var keyIndex:Number=0;
        
/*0表示可通过,1表示障碍物,2表示门,3表示钥匙*/
        
private var mapArray:Array=[[0,0,0,0,0,0,0,0,0,1,0,0,0],
                                    [
0,1,0,1,1,0,1,0,2,1,0,1,0],
                                    [
0,2,2,1,0,0,1,0,2,0,0,1,0],
                                    [
0,1,0,1,1,1,0,0,1,1,1,2,0],
                                    [
0,1,0,0,0,0,1,0,1,3,0,0,1],
                                    [
0,1,0,1,2,0,1,0,0,1,1,1,3],
                                    [
0,1,0,0,1,0,0,1,2,0,0,0,0],
                                    [
0,0,1,0,1,1,0,0,1,1,1,0,1],
                                    [
0,1,1,0,0,0,2,0,0,0,1,0,1],
                                    [
0,0,0,1,1,1,1,0,1,0,1,0,1],
                                    [
1,1,0,0,1,3,1,0,1,0,1,0,1],
                                    [
0,0,1,0,1,0,1,0,1,0,1,0,2],
                                    [
1,0,0,0,0,0,1,2,1,0,1,0,0],
                                    [
3,1,1,1,1,1,0,0,1,1,1,0,0],
                                    [
0,0,0,1,0,1,0,1,0,0,0,0,1],
                                    [
0,1,0,0,0,1,0,1,3,1,1,1,0],
                                    [
0,1,0,1,1,0,0,1,1,2,1,0,0],
                                    [
0,1,0,0,0,0,0,0,0,0,0,0,0],
                                    [
0,0,1,1,1,1,1,1,1,1,1,1,0],
                                    [
0,1,0,0,0,0,1,0,0,0,1,0,2],
                                    [
0,2,0,1,0,0,0,0,1,0,1,1,2],
                                    [
0,0,0,1,1,0,1,1,1,0,2,0,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<22; i++{
                
for (var j:Number=0; j<13; j++{
                    
if (mapArray[i][j]==0{
                        var way:Way
=new Way();
                        way.x
=i*22+50;
                        way.y
=j*22+50;
                        addChild(way);
                    }
 else if(mapArray[i][j]==1){
                        var block:Block
=new Block();
                        block.x
=i*22+50;
                        block.y
=j*22+50;
                        addChild(block);
                    }
 else if(mapArray[i][j]==2){
                        var door:Door
=new Door();
                        door.x
=i*22+50;
                        door.y
=j*22+50;
                        addChild(door).name
="door_"+i+"_"+j;
                    }
 else if(mapArray[i][j]==3){
                        var key:Key
=new Key();
                        key.x
=i*22+50;
                        key.y
=j*22+50;
                        addChild(key).name
="key_"+i+"_"+j;
                    }

                }

                
            }

            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 if(mapArray[x0][y0]==3){
                    getChildByName(
"mc0").x-=22;
                    removeChild(getChildByName(
"key_"+x0+"_"+y0));
                    keyIndex
++;
                    var way0:Way
=new Way();
                        way0.x
=x0*22+50;
                        way0.y
=y0*22+50;
                        addChild(way0);
                    mapArray[x0][y0]
=0;
                }
 else if(mapArray[x0][y0]==2 && keyIndex>0){
                    getChildByName(
"mc0").x-=22;
                    keyIndex
--;
                    mapArray[x0][y0]
=0;
                    removeChild(getChildByName(
"door_"+x0+"_"+y0));
                    var way4:Way
=new Way();
                        way4.x
=x0*22+50;
                        way4.y
=y0*22+50;
                        addChild(way4);
                }

                    
                    
                
else{
                    x0
+=1;
                }

            }

            
if(updir && y0>0){
                y0
-=1;
                
if(mapArray[x0][y0]==0){
                getChildByName(
"mc0").y-=22;
                }
 else if(mapArray[x0][y0]==3){
                    getChildByName(
"mc0").y-=22;
                    keyIndex
++;
                    removeChild(getChildByName(
"key_"+x0+"_"+y0));
                    mapArray[x0][y0]
=0;
                    var way2:Way
=new Way();
                        way2.x
=x0*22+50;
                        way2.y
=y0*22+50;
                        addChild(way2);
                }
else if(mapArray[x0][y0]==2 && keyIndex>0){
                    getChildByName(
"mc0").y-=22;
                    keyIndex
--;
                    mapArray[x0][y0]
=0;
                    removeChild(getChildByName(
"door_"+x0+"_"+y0));
                    var way5:Way
=new Way();
                        way5.x
=x0*22+50;
                        way5.y
=y0*22+50;
                        addChild(way5);
                    }

                
else{
                    y0
+=1;
                }

            }

            
if(rightdir && x0<21){
                x0
+=1;
                
if(mapArray[x0][y0]==0){
                    getChildByName(
"mc0").x+=22;
                }
else if(mapArray[x0][y0]==3){
                    getChildByName(
"mc0").x+=22;
                    keyIndex
++;
                    removeChild(getChildByName(
"key_"+x0+"_"+y0));
                    mapArray[x0][y0]
=0;
                    var way1:Way
=new Way();
                        way1.x
=x0*22+50;
                        way1.y
=y0*22+50;
                        addChild(way1);
                }
else if(mapArray[x0][y0]==2 && keyIndex>0){
                    getChildByName(
"mc0").x+=22;
                    keyIndex
--;
                    mapArray[x0][y0]
=0;
                    removeChild(getChildByName(
"door_"+x0+"_"+y0));
                    var way6:Way
=new Way();
                        way6.x
=x0*22+50;
                        way6.y
=y0*22+50;
                        addChild(way6);
                }

                
else{
                x0
-=1;
                
                }

                
                
            }

            
if(downdir && y0<12){
                y0
+=1;
                
if(mapArray[x0][y0]==0){
                getChildByName(
"mc0").y+=22;
                }
else if(mapArray[x0][y0]==3){
                    getChildByName(
"mc0").y+=22;
                    keyIndex
++;
                    removeChild(getChildByName(
"key_"+x0+"_"+y0));
                    mapArray[x0][y0]
=0;
                    var way3:Way
=new Way();
                        way3.x
=x0*22+50;
                        way3.y
=y0*22+50;
                        addChild(way3);
                }
 else if(mapArray[x0][y0]==2 && keyIndex>0){
                    getChildByName(
"mc0").y+=22;
                    keyIndex
--;
                    mapArray[x0][y0]
=0;
                    removeChild(getChildByName(
"door_"+x0+"_"+y0));
                    var way7:Way
=new Way();
                        way7.x
=x0*22+50;
                        way7.y
=y0*22+50;
                        addChild(way7);
                }

                
else{
                    y0
-=1;
                }

            }

            
        }

                
    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值