作者etrexetrex (ETREX)
看板Flash
标题Re: [问题] 新手上路─迷宫游戏 (actionscript语法)
时间Mon May 14 22:50:16 2007
※ 引述《chip58 (Chip)》之铭言:
: 今天又想了一下,决定不用计时功能,呵,因为觉得迷宫够难走了,
: 所以我取消计时功能,要改成提前放弃,也就是说如果没走完想放弃了,
: 就按放弃,然後画面就跑出"YOU LOSE"的字样还有取笑的笑声,
: 如果撑到最後到达终点,一到达终点画面就跑出"YOU WIN"的字样还有拍掌的背景声
: 所以我的问题就是:
: 1.该如何写控制被操控的圆圈走动时的上下左右的程式,
: 还有碰到"墙壁"就不能过的程式?
先学控制的部分
我的架构是迷宫里面放有两个影片片段
一个是 迷宫.地图
另一个是 迷宫.玩家
下面是往上移动的程式码
onEnterFrame=function(){ //每一影格执行一次
if (Key.isDown(Key.UP)){ //当按下↑的时候
迷宫.玩家._y -- ; //玩家往上移动
}
}
上下左右你可以自己试着写写看
onEnterFrame = function(){
当按下↑的时候,玩家往上移动
当按下↓的时候,玩家往下移动
当按下←的时候,玩家往左移动
当按下→的时候,玩家往右移动
}
但是这样还不够,因为没有判断撞墙的部分
先会上面的部分之後,再来作判断撞墙的部分
//如果玩家往上移动後会碰到墙壁
if(迷宫.地图.hitTest(迷宫.玩家._x,迷宫.玩家._y - 10,true)){
//如果玩家往上移动後不会碰到墙壁
if(迷宫.地图.hitTest(迷宫.玩家._x,迷宫.玩家._y - 10,true) == false){
把这个加入在刚刚的程式码里面
onEnterFrame=function(){
当按下↑的时候,如果玩家往上移动後不会撞墙,就往上移动
if (Key.isDown(Key.UP)){
if(迷宫.地图.hitTest(迷宫.玩家._x,迷宫.玩家._y - 10,true) == false){
迷宫.玩家._y -- ; //玩家往上移动
}
}
}
然後你会发现一个问题就是画面并没有跟着玩家移动,所以走一走就跑到画面外了XD
//追踪显示 (如果没记错的话是这样XD)
迷宫._x += (画面中心点的X - 迷宫.玩家._x );
迷宫._y += (画面中心点的Y - 迷宫.玩家._y );
这麽作可以维持玩家在画面中心点的X跟Y上
其实有另一个做法是玩家不动,迷宫动
但是我为了让迷宫可以旋转,所以我不能作成那样 @@"
如果你没有要让迷宫可以旋转,你可以考虑移动的时候是让迷宫作反向的移动
那样的话就不需要追踪显示的部分
PS :我的做法在碰撞判断时是很消耗效能的,迷宫越大消耗的效能越多...
PS2:其实我的变数命名是用英文不是用中文
: 2.被操控的圆圈,我在新增元件时是用新增按钮或是图片还是影片?
元件通常都是影片
: 3.一到终点就跳到赢家画面的程式或者是技巧该如何用?
这个部分是最简单的
用gotoAndStop() 或是 gotoAndPlay() 跳到结束的那页
: 不知道有没有写出我的问题,呵呵,很想看看E大的迷宫,上次也有看到一个,
: 那个就是引发我做这个迷宫的启蒙!!(说不定就是E大的)
: THX !!
顺便打一下广告-迷死人不偿命的迷宫连结
http://web.ntust.edu.tw/~B9409041/swf/ETREXmaze.html
--
http://etrex.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.228.0.103
1F:推 madturtle:推 04/25 02:07