JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 遊戲尋路思路
X_Killer





發文: 111
積分: 0
於 2010-05-18 19:47 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我自己想的,而且想滿久的,因為想出來太高興了,實在忍不住愛現一下…大家看看吧!
只要高中數學就可以了(因為我只有高中畢= =)

在2d的環境,有起點有終點
怪是可以四面八方走的360度

起點不論怎麼走,到終點一定有二種走法,何以見得?

|---------|
|*終點-| *
|--出口-|

不論外圍怎麼包終點,絕對不能包起來,不然就死路一條

|---------|
|*終點-|*
|--出口-|

走到碰壁了,有二個選擇,朝上,或朝下

走上示意圖:
*
|---------|
|*終點-|
|--出口-|

走下示意圖:
|---------|
|*終點 |
|--出口-|
*
看吧,就二個端點,我無法証明為何如此,但是事實應該是這樣

只找二條為前題,就簡單了。

怪的走法:
1.判定有多少方向可選(最多四個方向,這是為了計算才這樣設定)
2.在可走的方向走離終點最近的路,當然,若只剩一條路可走,就只能走了
3.若走到沒路(可能走到原來走的路與壁),就這條路不通
4.每走一步就紀綠,以防止走到原來的路

當第一次碰壁,就有二種選擇,二種都依照怪的走法來走,應該都走到終點

你會得到二種很笨的方式 走到終點的走法,再來是優化走法
這是其中一種走法的紀錄
(x1,y1) (x2,y2)(x3,y3)....(xn,yn)
先看(x1,y1)與(x3,y3)是否可連線不碰壁,如果可以就再試(x1,y1)到(x4,y4)是否可以
當走到(x8,y8)之後就不能連線不碰壁,就從x9,y9開始再看x11,y11 是否可連線,可以就…

當優化作完,你的路線可以連線不碰壁的走法就走(就是能走直線的就走),不能走就走一開始的紀錄點。然後計算路線的距離,二種挑一個最近的,就這麼簡單= =我竟然想超久…

其中我覺得比較難的是,連線間會不會碰壁要如何計算,我是這樣想的
從(x1,y1)到(x8,y8)的連線會不會碰避
(x1,y1)與(x8,y8)二點可以形成方形
方形內的點每一個點都去算與x1,y1 x8,y8所連成線方程的垂直距離,太近就表是會碰到
然後將所得的坐標看是不是壁,不是就ok,是就不能走。[color=Red][/color]


X_Killer edited on 2010-05-18 19:57
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
549 遊戲尋路思路 X_Killer 1119 2010-05-18 19:47
437 Re:遊戲尋路思路 fillano 229 2010-05-18 22:26
449 Re:遊戲尋路思路 snowifox 13 2010-05-19 00:23
» JWorld@TW »  Java 新手區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8