![]() |
|
|||||||
| 論壇說明 | 標記討論區已讀 |
|
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
|
主題工具 | 顯示模式 |
|
|
#8 (permalink) |
|
管理版主
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
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軸 障礙物等級 |
|
|
送花文章: 2060,
|