另外,需要注意的一點(diǎn)是當(dāng)盤子垂直移動時,在盤子的原位置重新繪制盤子為窗體背景色時,由于會導(dǎo)致一段柱子也會被覆蓋成窗體背景色,因此在原位置繪制盤子為背景色之后應(yīng)立即重新繪制一次柱子。
由于目前技術(shù)水平下PC機(jī)的CPU性能比較高,程序的執(zhí)行時間非常短,為了得到一個適度緩慢的盤子移動速度,在盤子移動到下一個位置時應(yīng)該暫停一個時間段。本程序中通過設(shè)置一個延遲函數(shù)以達(dá)到目的,當(dāng)盤子從子路徑的一端移動到另一端時立即調(diào)用自定義延遲函數(shù)delay(),delay()函數(shù)只是起到暫停程序執(zhí)行的作用,不執(zhí)行任何改變盤子現(xiàn)狀的指令。一個delay()函數(shù)的例子如下:
Private Sub delay()
Dim tt As Double
tt = Timer
While Timer - tt < 0.001 '延遲
DoEvents
Wend
End Sub
4 結(jié)束語
本文實(shí)現(xiàn)了一個完整的Hanoi塔問題動態(tài)演示程序,由用戶輸入盤子數(shù),盤子數(shù)目限定在1至10之間,盤子太多,屏幕顯示不下。程序編寫、運(yùn)行環(huán)境為windows xp+vb6.0,屏幕分辯率為1024×768。
相關(guān)推薦:
2009年4月計算機(jī)等級二級考試VF程序設(shè)計輔導(dǎo) C語言輔導(dǎo)三種常見的中文內(nèi)碼的轉(zhuǎn)換方法 計算機(jī)等考二級C語言考前復(fù)習(xí)資料(for循環(huán))