設計模式5:遊戲執行緒和暫停
阿新 • • 發佈:2018-12-15
遊戲執行緒的暫停,不需要讓整個執行緒掛起。如果整個執行緒掛起,怎麼恢復?
只需要為run函式的while迴圈內容加一個條件就行。
一、run函式的while迴圈條件
public void run() { System.out.println("== run -1"); System.out.println("== run -2"); //遊戲進行中, 更多的狀態表示,類名.static成員=類名.static常量 while (Tool.gamestate == 1) { // 勝負判斷 Tool.updatewin(hero, boss); 延時 } // end while if (Tool.gamestate != 1) // win , fail { new UIEnd(); // 彈出新視窗,新對話方塊 } System.out.println("== run -3"); }
二、為run函式的while迴圈內容加暫停條件
while (Tool.gamestate == 1) {
// 暫停功能
if (isPaused == 1) {
Tool.sleep();
continue;
}
//其他重新整理
//延時
}
暫停條件的修改,在滑鼠或按鈕事件中實現。
為鍵盤事件,單獨寫一個類,如果沒有良好的架構,很難調整維護。即使執行正確,很難後續使用。
public class KeyPro implements KeyListener{ public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub System.out.println("== KeyPro keyReleased "+e.getKeyCode()); if(e.getKeyCode() == KeyEvent.VK_Q) //81 { Tool.pane.isPaused=1-Tool.pane.isPaused; // 0,1切換 } } public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub } public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } }
這樣一個暫停功能就做好了,資料不再重新整理,畫面也就沒變化。
方便做遊戲截圖。