从左上角走到右下角
规则:深蓝色的方块代表角色,按上下左右键控制人物角色,黑色的方块代表可以通过,红色的方块代表墙,禁止通过,黄色的方块代表钥匙,捡起来了就可以开门,淡蓝色的方块代表门,只有有钥匙才能通过,一把钥匙只能通过一个门。一把钥匙只能开一个门
源文件下载: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;
}
}
}
}
}
本文介绍了一个简单的迷宫游戏实现方案,玩家需要控制角色躲避障碍、收集钥匙并打开门以达到终点。文章详细展示了如何使用Flash进行游戏开发,包括地图设计、键盘事件监听及角色移动逻辑等。
2万+

被折叠的 条评论
为什么被折叠?



