此java方法正在跳過返回語句。我想知道是否有人遇到過這個問題並知道解決方案。無論這個bug是非常微妙的。Java方法正在跳過返回語句
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());
}
而且,這個bug纔開始,當我把我的gamestates在疊層結構發生。這是我現在正在使用的遊戲狀態過渡的代碼:
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>();
希望有人有一些見解。謝謝!
如果您的「證明」是在「檢查點1」之後記錄「檢查點2」,那顯然是另一個調用。嘗試調試您的代碼。 – shmosel
你正在調用'getNextGameState'兩次...... – assylias
另外,PlayField和GameOver都擴展了GameState – DayTripperID