1. 程式人生 > 其它 >修復restart和returnMain時計時器無法重置的bug

修復restart和returnMain時計時器無法重置的bug

原本所有帶有計時的模式在點選選單欄中的restart時重置遊戲時,計時器執行緒並不會重置 導致遊戲restart後倒計時仍然與restart前一致

解決方法:

(以下均以隨即障礙物模式程式碼為例,其他模式同理)

計時器類TimeBarrier部分

在計時器類中設定一個boolean型別成員變數exit

當exit的值為false時,計時器執行緒正常執行, 當值為true時,計時器執行緒結束執行

並在run()方法的迴圈體中檢查exit變數的值

當exit值為true時return run()方法 使得該執行緒結束

遊戲模式介面GamePanelBarrier部分

給GamePanelBarrier設定TimeBarrier型別的成員變數t

並宣告一個方法setTimer(TimeBarrier timer)來為變數t賦值

在使用選單欄的restart選項時

將t物件的exit值賦值為true 從而使得原本的計時執行緒結束

並呼叫createNewTimer()方法建立新的TimeBarrier物件並執行程序開始新的計時

在使用選單欄的returnMain選項時

直接結束掉計時器執行緒即可 因為如果通過主介面再次進入該模式時會重新建立計時器物件計時

遊戲主介面GameFrame部分

在切換Panel時建立新的TimeBarrier物件t 並將該t的引用賦值給GamePanelBarrier中的t 然後啟動計時執行緒

其他模式

同理