2011-12-03 10 views
0

ゲームに一時停止機能を追加しようとしています。残念ながら、私が現在使っている方法では、プログラムは入力をもう一度も受けないので、ゲームを再開できません。Javaアプリケーションでゲームを一時停止する

ポーズボタンコール:

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()); 
     } 
    } 
}; 

ダニ:

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をを持っている。ここ

は、私が現在やっているものです毎秒ゲーム内で行動を起こす。

これは、ボタンを押したときにゲームを一時停止し、もう一度ボタンを押したときに一時停止すると考えていますが、間違っています。私は間違って何をしていますか?これは、スレッドの問題のように見える

public void pause(){ 
    data.paused = !data.paused; 
} 

+0

は 'aTask'にはゲームロジックが含まれていますが、これは何のためですか?ゲームロジックのループはどこですか? – havexz

+0

は?プレイヤーは0名ですか? http://www.technicalypto.com/2011/08/conways-game-of-life-in-java.htmlは、一時停止を必要とする0人のプレーヤーのゲームの例です。 1人のプレイヤーの場合は、さらにコードを表示してください。 – bragboy

+0

なぜスリープ状態になったら、ループして一時停止状態を確認できるのか?私はあなたがまだクラッシュの場合に画面をレンダリングしたり、状態を保存しなければならないかもしれないと思いますか? –

答えて

5

単にこれを試してみてください。 Swingを使用していて、一時停止メソッドがアクションリスナーに関連付けられている場合、動作が正常でない場合:一時停止機能が返されず、メインスレッドが再び制御権を持つことはなく、非アクティブ化を含むさらなるアクションを管理できません... this link

私の解決策は、単にポーズ変数の状態を逆にし、Swingに制御を戻します。これは、この変数の状態に従ってデータをチェックするゲームのメインループです。スレッドはブロックされず、メインループはループし続けます。

+0

元のポスターから聞いたことがないので、これが正しいかどうかは分かりませんが、それは私にとっては良いことです。 1 + –

+0

"Hovercraft Full Of Eels":D:D:D – solendil

+0

ありがとう、これはうまくいきません、私はこの質問にもっと敏感ではありませんでしたが、この解決策はうまくいくようです。私はそれが他の誰かを助けることです詳細に置くことができます。 –

関連する問題