伊莉遊戲
回復 #1 江小龜 的帖子
針對您要的 1 秒鐘做數個動作,
針對你的問題,我提出你 "一定會" 遇到的問題
(1)
假設1秒鐘我分割成二個時間點,分別為 t1,t2,(設t1=0.5 sec, t2=1.0 sec)
所執行的程序為 p1,p2
每個程序消耗的時間為 e1,e2
那麼你必需要確定一件事,就是程序 p1 的執行時間一定會小於 t2-t1(=0.5sec)
不然你的程式會有很大的問題(因為傳統的程設是循序式,e1執行完畢才會執行e2)
意思是說,如果 e1=1.0 sec
那麼你把時間切了也沒用
等 e1 執行完,下一個程序又跑回 e1,e2 不知道什麼時候才會執行
(2) 你的想法其實有點 "逆向"
不是要判斷一秒需執行多少程序
而是先確認、測式你的程序執行完一個需要多少秒
(除非你已會用 thread 比較沒這方面大問題)
再判斷你時間上的切割該怎麼切會使整個程式穩定
而且說真的,程序執行時間也包在時間差裡面
這種方式可信度真的有限
(3)
如果你會視窗程式設計
我比較建議你使用 SetTimer() 的方式,
(語法為 SetTimer(UINT nIDEvent,UINT nElapse, NULL);)
(其中 nElapse 為多少毫秒,如 輸入 200,就代表 0.2sec)
再呼叫 WM_Timer()
(在這裡就算你不用多行緒也可以辦得到!)
這樣就等於是一個 系統幫你做 Polling 的方式,每 0.2 sec 就 polling 一次
同時 polling 時間的準確度亦達 0.86 "微秒"
如果你要用 Standard C 去做到這種地步,我想蠻困難的
(光是算 clock() 準確度只達 5ms、Sleep 誤差近 1.09%....)
所以,如果你要在一秒做數個動作,建議你還是學視窗設計(或會使用MFC)會比較好一點
小弟淺見而已
(4)
程式碼不附了(光編輯就不知道花多久時間了)
有心學 MFC 的話請上 Google 大神 search...
|