Friday, January 23, 2015

Anansi: Layers


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