Re: [問題] 小精靈遊戲裡, 如何決定Ghost的路徑

看板java作者 (Another Day...)時間16年前 (2007/10/14 04:22), 編輯推噓8(805)
留言13則, 7人參與, 最新討論串7/7 (看更多)
先感謝大家的熱情分享 沒想到會有這麼多高手回應 我後來也有找出比較不會loop的版本 不過跟會追著PacMan跑的完美境界還有很大的距離 ^^" 我後來的作法是, 讓Ghost Random決定的要走方向 然後去檢查這個方向能不能走 不能走就重取Random. 不過這樣會有一個bug, 因為上下左右 才四各方向 random的值域太小 會出現ghost先往左邊走, 馬上走右邊 有倒退的感覺 覺得還是有點笨 所以在random值取完 我會先判斷 之前走的方向 跟這次走的方向是不是相反 (表示走回頭路) ex: random說要走右, 上一次走左 就要判斷上下還有左是否都不能走, 如果是 才確定走右 否則就要重取random 這樣就可以大大避免走前 又馬上往回走的窘境 也不會因為說不准走反方向而被困住.. 至少現在看起來 ghost像是自由的到處亂跑 :p 不過我又有一個很蠢的問題 這個單機版的PacMan裡面有三各class, class MyGameEngine implements GameEngineInterface class Ghost extends Thread public class Main 平常都用Netbean開發 但是現在反而不知道 如果要在Command Line執行 我先執行了: javac -classpath pacman.jar Main.java 會出現: Ghost.class MyGaneEngine.class Main.class 我試過打下面的command java Main.class 但卻出現這樣的error Msg: Exception in thread "main" java.lang.NoClassDefFoundError: Main/class 不知道是否有高手願意指點我這個笨蛋 感激不盡! ※ 引述《Lordaeron (Terry)》之銘言: : ※ 引述《Racci (Another Day...)》之銘言: : : As title, : : 先簡單介紹這個遊戲, 英文是叫做PacMan, 也就是大家俗稱的小精靈遊戲 : : 在迷宮裡, 有 : : 1. PacMan: 即User本身 : : 2. Jewel: 放在迷宮裡的寶物 : : 3. Ghost: 在迷宮裡四處移動的怪物, 如果PacMan碰到鬼, 就Game Over了.. : : 我已經做的差不多, 是StandAlone版.. : : 但是有一個很蠢的Bug.. : : Ghost移動時, 很容易跑一跑就陷入某各程度的loop, 不斷循環的跑某各區域 : : 先承認我現在做的路徑判斷很爛.. : : 大致就是 看現在的位置 上下左右 哪各可以走 就往哪邊走 : : 可能是因為上下左右判斷的順序一下 所以才會讓Ghost跑一跑就開始循環 : : 在網路上找過一些資料 : : 有些人是說, 必須要找出Ghost跟PacMan之間的最短路徑 : : 但是我一直不懂.. 所謂的最短路徑怎麼找出來 : : 舉例來說: : : ########## : : # # : : # p### # # : : # ## # # : : # ## # : : ##### # : : # g # ### : : # # ## # : : # # # # : : ########## : : 從Ghost怎麼直接找shortest path去抓PacMan? : : 在我的想法裡, 不是每走一步, 才知道接下來要走哪各位置嗎? : : 在上面的例子裡, PacMan在上方, 可是上面是牆, 只有左右可以走 : : Ghost怎麼知道要走左邊好 還是右邊比較好? : : 問題有點複雜, 謝謝大家看完 :) : 你該不會想古時候的電腦會使用ooxx search 來追吧? : 你有興趣可以拿台286 來跑看看, 保證你game 都不用玩了. : 更別說6502了. : 你有空去找個PACMAN來玩玩吧. : 看看它們的反應, 猜猜就好了. 千萬別想太多. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 75.7.19.19

10/14 07:42, , 1F
也許可考慮看看dynamic programming
10/14 07:42, 1F

10/14 10:12, , 2F
java Main (不用.class )
10/14 10:12, 2F

10/14 14:07, , 3F
給鬼一個方向,他就不會隨便回頭
10/14 14:07, 3F

10/14 19:17, , 4F
我覺得前面幾位大大有提到 不需要用到特別的最短路徑去算
10/14 19:17, 4F

10/14 19:19, , 5F
1.遊戲一下子就結束了 2.早期電腦運算不會想浪費太多效能
10/14 19:19, 5F

10/14 19:21, , 6F
我猜用以前玩的經驗 他只在交叉入口下不同機率就行了
10/14 19:21, 6F

10/14 19:24, , 7F
到後期人走過的路口的機率在隨機變高點 速度變快就容易死了
10/14 19:24, 7F

10/14 19:26, , 8F
不過還是要實際作過才知道...
10/14 19:26, 8F

10/15 00:37, , 9F
隨機和直線追合起來就好了. 隨機在遇到路口, 直線上有
10/15 00:37, 9F

10/15 00:39, , 10F
PacMan 就追, 路口遇到pacman 的方向追, 就這樣就好了
10/15 00:39, 10F

10/15 12:22, , 11F
咦. 沒想到直線追合這個Idea, 感謝分享!!
10/15 12:22, 11F

10/16 06:14, , 12F
看來你是沒看推文的習慣
10/16 06:14, 12F

10/18 11:54, , 13F
版眾好熱情XDDD 也提醒了不少,好久沒有寫遊戲了呀!XD
10/18 11:54, 13F
文章代碼(AID): #174IZhNm (java)
討論串 (同標題文章)
文章代碼(AID): #174IZhNm (java)