The tutorial at
http://wiki.netbeans.org/CreatingJavaMEGamesWithGameBuilder helped me make a simple game with 2 levels, The first level being the forest level and the second one being the Desert level. I managed to make both these level work. As soon as the sprite Karel moves to the bottom right edge of level 1, level 2 is displayed, which also works fine. But now Ive made a third scene which I want to start as soon as the sprite Karel reaches the bottom right of the level 2 (i.e desert scene)
I know that this portion of the code makes the level 2 load as soon as Karel reaches the bottom right.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public void run() { Graphics g = getGraphics(); while (!this.interrupted) { if (this.spriteKarel.getX() >= 340 && this.spriteKarel.getY() >= 340) { try { this.ground = this.gameDesign.getSand(); this.colliders = new TiledLayer[] {};
while (this.lm.getSize() > 0) { Layer l = this.lm.getLayerAt(0); this.lm.remove(l); } this.gameDesign.updateLayerManagerForDesert(this.lm); } catch (IOException e) { e.printStackTrace(); } this.viewPortX = 0; this.viewPortY = 0; this.lm.setViewWindow(this.viewPortX, this.viewPortY, this.getWidth(), this.getHeight()); this.lastDirection = -1; } |
But how can I do the same for level 3 to load? I tried adding the following code in the run function but it ran level 3 instead of level 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| if (this.spriteKarel.getX() >= 300 && this.spriteKarel.getY() >= 300) {
try { this.ground = this.gameDesign.getSide(); this.colliders = new TiledLayer[] {};
while (this.lm.getSize() > 0) { Layer l = this.lm.getLayerAt(0); this.lm.remove(l); } this.gameDesign.updateLayerManagerForWall(this.lm); } catch (IOException e) { e.printStackTrace(); }
this.viewPortX = 0; this.viewPortY = 0; this.lm.setViewWindow(this.viewPortX, this.viewPortY, this.getWidth(), this.getHeight());
this.lastDirection = -1; } |