查看單個文章
舊 2005-12-04, 09:31 AM   #7 (permalink)
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:98 | 在線時長:10174小時 | 升級還需:23小時級別:98 | 在線時長:10174小時 | 升級還需:23小時級別:98 | 在線時長:10174小時 | 升級還需:23小時級別:98 | 在線時長:10174小時 | 升級還需:23小時級別:98 | 在線時長:10174小時 | 升級還需:23小時級別:98 | 在線時長:10174小時 | 升級還需:23小時級別:98 | 在線時長:10174小時 | 升級還需:23小時級別:98 | 在線時長:10174小時 | 升級還需:23小時
註冊日期: 2002-12-07
文章: 13495
精華: 0
現金: 26860 金幣
資產: 3024790 金幣
預設

If RectBrick.W > RectBrick.H Then
SpeedText.Text = Int(RectBrick.H / 3)
Else
SpeedText.Text = Int(RectBrick.W / 3)
End If

因為磚塊大多情況是長方形 (分 RectBrick.W 與 RectBrick.H)
而一步移動距離(SpeedText.Text)是不分長寬的
所以就取最短的一邊 (RectBrick.W與 RectBrick.H 比較) 給 SpeedText.Text
為了使移動時 不移動過頭 (到磚塊裡)


Q:上述那些600、240、720各代表啥意思呢??
A:只是個老鼠(Shape(Index) )於休息室位址的定位 (水平位址 Shape(Index).Left )


strMapFile = CommonDialog_Click(Me)
是呼叫WinAPI的 對話框 來賦予地圖檔名
這裡捨棄 VB提供的 CommonDialog控制項 元件,目的是如此就不需考慮該PC有無 comdlg32.ocx (VB的插件)

您可以在這三行設下中斷點
strMapFile = CommonDialog_Click(Me)
strMapFile = StringSplit_Str(strMapFile, "1\0$.txt", 1)
If strMapFile = "" Then strMapFile = Dir(App.Path + "\" + "MAP*.txt")
來體會
strMapFile = CommonDialog_Click(Me)
strMapFile = StringSplit_Str(strMapFile, "1\0$.txt", 1)
的作用
(
其實照理講 strMapFile = StringSplit_Str(strMapFile, "1\0$.txt", 1)
是多此一舉
但因為 CommonDialog_Click(Me)設計的關係
會傳回一個 257字元長度的字串
※ 原因在CommonDialog_Click含式的 OpenFile.lpstrFile = String(257, 0) 這一行
所以利用 strMapFile = StringSplit_Str(strMapFile, "1\0$.txt", 1)
來捨去 .txt 以後的 字串
※ chr(0) 無法用 trim 來捨棄
)


StringSplit_Str是一個自制的字串分割 函數
StringSplit_Str(欲作用的字串, 分割用參數, 傳回第幾分割字串)
其實VB 有一個 Split 保留字
只是他傳回值 是一個陣列變數 會傳回全部子分割字串
(要用第幾個就用( )來指定第幾分割字串,也可
Split(欲作用的字串, 分割用字串)(傳回第幾分割字串) 方式來直接指定 傳回第幾分割字串
但花費時間不變
)
因此效能不及個人的 StringSplit_Str (有測試過)

strMapFile, "1\0$.txt", 1 表示
用 .txt 針對 strMapFile 做對半分割 傳回 前半段+".txt" 字串
(如是 "1\0$.txt", 0 就是取後半段)
(1\0$ 後的字串是切割辨識字串)
如果 strMapFile= "c:\temp\Map100.txt %#@%@# "
就會回傳 "c:\temp\Map100.txt"

而 StringSplit_Str 還有其他用法
比如
StringSplit_Str(strMapFile, chr(13)+chr(10), 5)
會傳回第5行字串 (因為 chr(13)+chr(10) 是換行字串,也可用vbCrLf 或 vbNewLine
)
如沒有第5行即傳回 "" 空字串
mini 目前離線  
送花文章: 2055, 收花文章: 8070 篇, 收花: 26924 次
回覆時引用此帖