幫你兩個地方 (個人不會 c/c++ 之印圖的語法,但如何邏輯式印圖其實沒這麼複雜)
.先看圖
只要畫出 座標的記憶體配置方式
就可根據 可通行的方向
訂出六條通路之判斷語法
.六條通路之判斷語法 如下 (這裡個人用 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