史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   C語言問題請各位大大幫忙 (http://forum.slime.com.tw/thread228776.html)

elix 2008-04-26 10:20 PM

C語言問題請各位大大幫忙
 
請各位大大幫忙~如何印六角型的迷宮牆且判斷要找到最近的路,從S走到E. 現在還在打轉. 如圖

http://img176.imageshack.us/img176/7356/tmp968ng2.jpg

rank 2008-04-27 04:01 AM

我只說明對應結構的部份,把六角形的地圖對印到二維矩陣
至於走法只有6個方向,看你結構對應的方式決定對應的方向
如果對應好了搜尋的算法也不用擔心,有太多算法
接下來麻煩的地方就是秀出圖形

mini 2008-04-27 03:47 PM

幫你兩個地方 (個人不會 c/c++ 之印圖的語法,但如何邏輯式印圖其實沒這麼複雜)
.先看圖
http://xs226.xs.to/xs226/08170/d6725.jpg

只要畫出 座標的記憶體配置方式
就可根據 可通行的方向
訂出六條通路之判斷語法


.六條通路之判斷語法 如下 (這裡個人用 VB寫)
語法:

'X 及 Y 是新的座標,iNO 是試問的方向(1~6),當(X,Y)可通時 IsDirectionOK=True
Public Function IsDirectionOK(iNO As Integer, X As Integer, Y As Integer) As Boolean
    '(NowX,NowY) 是目前老鼠的座標
    Select Case iNO
    Case 1
        X = NowX
        Y = NowY - 1
    Case 2
        X = NowX + 1
        Y = NowY - 1
    Case 3
        X = NowX + 1
        Y = NowY
    Case 4
        X = NowX
        Y = NowY + 1
    Case 5
        X = NowX - 1
        Y = NowY
    Case 6
        X = NowX - 1
        Y = NowY - 1
    Else Case
        'IsDirectionOK = False
        Exit Function
    End Select
   
    'MapXMax 及 MapYMax 記憶體陣列的 X,Y size
    If (X < 0 Or Y < 0) And (X <= MapXMax Or Y <= MapYMax) Then
        'IsDirectionOK = False
    Else
        'Map為 地圖之記憶體陣列,內容為0 表示此方向無阻礙
            If Map(X, Y) = 0 Then IsDirectionOK = True
    End If

End Function


至於函式 IsDirectionOK 要傳那個方向
這就由您自己決定
最間單就是依序 1~6
另外也可用 範圍規範式的1~6亂數 選擇


如何使用
語法:

'D 是您決定測試的方向
If IsDirectionOK(D, X, Y) = True Then
    NowX = X
    NowY = Y
End If


elix 2008-04-27 08:29 PM

wah~好複雜喔
還是謝謝!!

rank 2008-04-28 05:20 AM

很感謝mini版主做那麼仔細的教學
不過在實作上仍有一些差異就是


所有時間均為台北時間。現在的時間是 12:00 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1