Our game will have various layers to show some kind of depth. The layers are in this order:
- scrolling background
- lower clouds
- bullets
- playfield (player, enemies)
- upper clouds
- score
- debug information
The code for this is straightforward:
Pane backgroundLayer; Pane lowerCloudLayer; Pane bulletLayer; Pane playfieldLayer; Pane upperCloudLayer; Pane debugLayer; @Override public void start(Stage primaryStage) { this.primaryStage = primaryStage; try { // create root node Group root = new Group(); // create layers backgroundLayer = new Pane(); lowerCloudLayer = new Pane(); bulletLayer = new Pane(); playfieldLayer = new Pane(); upperCloudLayer = new Pane(); debugLayer = new Pane(); // add layers to scene root root.getChildren().add( backgroundLayer); root.getChildren().add( lowerCloudLayer); root.getChildren().add( bulletLayer); root.getChildren().add( playfieldLayer); root.getChildren().add( upperCloudLayer); root.getChildren().add( debugLayer); // create scene Scene scene = new Scene( root, Settings.SCENE_WIDTH, Settings.SCENE_HEIGHT, Color.BLACK); // show stage primaryStage.setScene(scene); primaryStage.show(); ... // start the game startGame(); } catch(Exception e) { e.printStackTrace(); } }We introduced a special Settings class so that we can change the game's attributes at one place.
public class Settings { public static double SCENE_WIDTH = 400; public static double SCENE_HEIGHT = 800; }
This way it's easy to vary the scene dimensions depending on your playfield size.
No comments:
Post a Comment