我正在嘗試將暫停功能添加到遊戲中。不幸的是,我目前使用的方法導致程序沒有更多的輸入,所以我無法恢復遊戲。在java應用程序中暫停遊戲
這是目前我在做什麼:
暫停按鈕呼叫:
public void pause(){
if(data.paused == true){
data.paused = false;
}
else{
data.paused=true;
while(true){
if(data.paused == true){
try{
Thread.currentThread().sleep(100);
}
catch(InterruptedException ie){
System.out.println(ie);
}
}
else
break;
}
data.paused=false;
}
return;
然後,我有一個TimerTask,我不得不面對:
class aTask extends java.util.TimerTask {
protected Data data;
public aTask(Data d) { data = d; }
public void run() {
try{
if(data.paused){
try{
Thread.currentThread().sleep(100);
}
catch(InterruptedException ie){
System.out.println(ie);
}
}
else
data.tick();
}
catch(ATCGameOverException e){
data.gameOver(e.getMessage());
}
}
};
那裏剔每秒都會在遊戲中引發一個動作。
我會認爲這會讓遊戲在按下按鈕時暫停,然後再按下按鈕時取消暫停,但是我會錯誤的。我究竟做錯了什麼?
是'aTask'包含遊戲邏輯,如果不是這是什麼?遊戲邏輯循環在哪裏? – havexz
這是一個0人遊戲? http://www.technicalypto.com/2011/08/conways-game-of-life-in-java.html是一個需要暫停的0人遊戲例子。如果其單人玩家,請展示更多代碼。 – bragboy
爲什麼試着睡覺,什麼時候可以循環檢查暫停狀態?我猜你仍然可能需要渲染屏幕或保存某種狀態以防崩潰? –