查看單個文章
舊 2008-04-27, 03:47 PM   #3 (permalink)
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:98 | 在線時長:10165小時 | 升級還需:32小時級別:98 | 在線時長:10165小時 | 升級還需:32小時級別:98 | 在線時長:10165小時 | 升級還需:32小時級別:98 | 在線時長:10165小時 | 升級還需:32小時級別:98 | 在線時長:10165小時 | 升級還需:32小時級別:98 | 在線時長:10165小時 | 升級還需:32小時級別:98 | 在線時長:10165小時 | 升級還需:32小時級別:98 | 在線時長:10165小時 | 升級還需:32小時
註冊日期: 2002-12-07
文章: 13490
精華: 0
現金: 26853 金幣
資產: 3024783 金幣
預設

幫你兩個地方 (個人不會 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

此帖於 2008-04-27 04:31 PM 被 mini 編輯. 原因: 修辭
mini 目前離線  
送花文章: 2054, 收花文章: 8068 篇, 收花: 26921 次
回覆時引用此帖
有 2 位會員向 mini 送花:
elix (2008-04-27),rank (2008-04-28)
感謝您發表一篇好文章