修復restart和returnMain時計時器無法重置的bug
阿新 • • 發佈:2021-12-08
原本所有帶有計時的模式在點選選單欄中的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 然後啟動計時執行緒
其他模式
同理