Re: [問題] 新手上路─迷宮遊戲 (actionscript語法)

看板Flash作者 (ETREX)時間18年前 (2007/05/14 22:50), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/5 (看更多)
※ 引述《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

04/25 02:07, , 1F
04/25 02:07, 1F
文章代碼(AID): #16I7SiIF (Flash)
文章代碼(AID): #16I7SiIF (Flash)