1. 程式人生 > >設計模式5:遊戲執行緒和暫停

設計模式5:遊戲執行緒和暫停

遊戲執行緒的暫停,不需要讓整個執行緒掛起。如果整個執行緒掛起,怎麼恢復?

只需要為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
		
	}
}

這樣一個暫停功能就做好了,資料不再重新整理,畫面也就沒變化。

方便做遊戲截圖。