เมื่อคุณพูดถึงหน้าจอฉันรู้สึกว่ามันเป็นการดีที่จะแยกตรรกะทั้งหมดนั้นออกเป็นหน้าจอที่แตกต่างกัน สิ่งที่ฉันทำตามปกติ:
กำหนดอินเตอร์เฟสที่เรียกว่าหน้าจอและให้ใช้หลายหน้าจอ เช่น LoadingScreen, MainMenuScreen, GameScreen, GameOverScreen, HighScoreScreen เป็นต้นในเกมของคุณคุณใส่ตัวแปรที่เก็บหน้าจอปัจจุบัน แต่ละวงคุณเรียก screen.update () และแสดงหน้าจอปัจจุบัน วิธีนี้จะช่วยให้คุณประหยัดได้มาก "ถ้าสถานะนี้ทำเช่นนั้น" เนื่องจากสถานะของคุณถูกกำหนดโดยหน้าจอปัจจุบัน
นี่จะแยกตรรกะของคุณออกเป็นอย่างมาก
รหัสตัวอย่าง:
### Screen interface ###
public interface Screen {
public void show();
public void update(float delta);
public void render(float delta);
public void hide ();
}
### An implementation of screen ###
public class MainMenuScreen implements Screen {
private Game game;
public MainMenuScreen(Game game) {
this.game = game;
}
public void show() {
// init stuff
}
public void update(float delta) {
// react to clicks, update animations etc.
if (buttonwasclicked) {
game.setScreen(new GameScreen(game)); // change the screen
}
}
public void render(float delta) {
// draw everything
}
public void hide() {
// release all resources, as the screen is being hidden
}
}
### Game, drawing the appropriate screen ###
public class Game {
public Screen screen;
public void update() {
screen.update(getDeltaTime);
screen.render();
}
public void setScreen(Screen screen) {
this.screen.hide();
this.screen = screen;
this.screen.show();
}
}
หรือขึ้นอยู่กับการตั้งค่าเกมของคุณคุณอาจจะวนซ้ำไม่สิ้นสุดเหมือนเกมของคุณ
while(true) {
calculatetimesincelastframe()
screen.update(time);
screen.render(time);
}