查看單個文章
舊 2005-12-23, 10:41 AM   #8 (permalink)
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時
註冊日期: 2002-12-07
文章: 13382
精華: 0
現金: 26616 金幣
資產: 3024526 金幣
預設

Q:Mouse(1).(2)-->代表滑鼠左右鍵嗎??
A:可見到 MouseModule.bas
Public Mouse(1 To 2) As Mouse_Data '老鼠資料(結構)
Mouse(1)表示為1號老鼠的結構 (資料紀錄)
這裡不是指滑鼠

Q:這兩行我看不懂代表啥意思??
A:是指 Initial 副程式的程式代碼嗎?
同樣首先看到 MouseModule.bas 有解釋
Mouse(i).FlagX(x).FlagY(y) 是一個老鼠心中的 地圖
用來記錄走過的路
redim 沒有用到 Preserve 保留字
就表示重新宣告變數,之前的內容都會被清空
所以
Redim .FlagX(.OldMapX+1)
Redim .FlagX(j).FlagY(.OldMapY+1)
是表示老鼠宣告一份新的地圖
這份地圖一開始為
Mouse(老鼠編號).FlagX(x寬度).FlagY(y寬度) 這般大小
那網友一定會說
Q:老鼠怎麼知道目前自己處於 迷宮陣列的(x,y)位址呢?
A:基於程式必須提供
一份 矩陣資料結構(來給老鼠指示 哪裡可走) +
老鼠本身知到自己的 .Left .Top 座標 +
所以
可算出來 自己處於 迷宮陣列的(x,y)那個位址
(這就是與現實世界的最大不同)

說起來 "迷宮矩陣資料結構 個人的設計 會透露這個迷宮有多大 給老鼠"
這一點有點作弊的嫌疑
不過因為當初是 邊寫邊作規劃的情況下 (未嚴格限制)
所以就不作多說...

作弊的地方就是...

Private Function NotIsNewCoordinate_Range(....) As Boolean
With MoveObject
'現在所處的地圖 陣列座標
X = Int((OBJ.cx(MoveObject)) / RectBrick.W) + 1
Y = Int((OBJ.cy(MoveObject)) / RectBrick.H) + 1

這裡算出了目前處於 "迷宮陣列的(x,y)那個位址"
RectBrick.W 及 RectBrick.H ---->分別代表 迷宮陣列的 最大維度
老鼠應該是不知的才對
不過程式設計原本就有 變數最大值的限制
所以
老鼠知道 迷宮陣列有多大 來準備一份空白地圖
也是合情合理的 (現實世界可比喻成 老鼠的腦容量)

當然要限制老鼠不知 "迷宮陣列的 最大維度" 也可以
此時就要用 鍊結 的方式來設計
不過程式設計難度會變大...
(有無其他方法...有空再看看 )

最後...
.FlagX(0).FlagY(0)=UBound(.FlagX)
.FlagX(0).FlagY(1)=UBound(.FlagY(1).FlagY)
Q: 該不會是把舊的宣告利用UBound來重新宣告嗎??
A: 是的...

.FlagX(0).FlagY(0) '紀錄 心中陣列地圖X軸上限
.FlagX(0).FlagY(1) 'Y軸上限
.FlagX(>1).FlagY(>1) '表示 X,Y軸 障礙物等級
mini 目前線上  
送花文章: 2027, 收花文章: 8021 篇, 收花: 26846 次
回覆時引用此帖