2016-12-15 6 views
1

このJavaメソッドはreturn文をスキップしています。誰かがこれに遭遇したかどうかと、解決策を知りたいと思っていました。バグが何であれ、それは非常に微妙です。ここでJavaメソッドがreturn文をスキップしています

public GameState getNextGameState() { 
    if (player.getLives() > 0) { 
     if (!player.isAlive()) { 
      System.out.println("checkpoint 1"); 
      player.setIsAlive(true); 
      return new PlayField(width, height, hiScores, player.setCoordinates(width/2, height - 8), 
        stagePattern, stage); 
     } 
     System.out.println("checkpoint 2"); 
     if(++stage > 29) 
      stage = 0; 

     return new PlayField(width, height, hiScores, player.setCoordinates(width/2, height - 8), stage); 
    } 
    return new GameOver(Game.key, hiScores, player.getRank()); 
} 

それを証明するために、コンソール出力とスクリーンショットです:また enter image description here

、このバグは、私だけがスタック構造で私gamestatesを入れたときに起こって始めました。ここで私は今gamestate遷移のために使用しているコードは次のとおりです。

public void update() { 

    gsm.peek().update(); 

    if(gsm.peek().finished) 
     if(gsm.peek().getNextGameState() == null) 
      gsm.pop(); 
     else 
      gsm.push(gsm.pop().getNextGameState());    
} 

GSMの宣言は次のとおりです。

public static Stack<GameState> gsm = new Stack<GameState>(); 

うまくいけば、誰かがいくつかの洞察力を持っています。ありがとうございました!

+2

"証明書"が "チェックポイント1"の後に "チェックポイント2"を記録している場合、それは明らかに別の呼び出しです。コードをデバッグしてみてください。 – shmosel

+2

あなたは 'getNextGameState'を2回呼びます... – assylias

+0

また、PlayFieldとGameOverはどちらもGameStateを延長します – DayTripperID

答えて

1

同じ呼び出しの結果ではありません。
ここではメソッドを2回呼び出します。
初めて生きていないときは、生きている。したがって、出力に両方のメッセージが表示されます。
ゲームでは、更新フェーズが連続して呼び出されます。
ちょうどメソッドの開始時にSystem.out.printlnを追加します(つまり、条件の前にある)、あなたは確認を持つことができます:

public GameState getNextGameState() { 

    System.out.println("enter method"); 
    ... 
} 
+0

ありがとうございます。新しいスタック呼び出しは 'gsm.peek()。update();です。 \t \t GameState gs = null; \t \t \t \t(gsm.peek()完成した。){ \t \t \t GS = gsm.peek()getNextGameState()もし。 (3535) \t \t \t \t \t \t 場合(GS = nullを!) \t \t \t \t gsm.push(GS); \t \t} ' – DayTripperID

1

あなたはより多くのコードを投稿することができますか?あなたはたぶんそれを2度呼んでおり、返品をスキップしているわけではありません。あなたが本当にそれがデバッグを支援し、コードが実行されるのを見るためにブレークポイントを置いていると思うなら。

関連する問題