Im trying to get the nextWave function to run in the Myworld class. However it doesn't seem to like it :(
Here is the MyWorld code, im struggling to get to grips with the whole OOP thing. Hopefully someone can help.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.List; import java.util.ArrayList; public class Wave_management extends Actor { private WaveManager waveManager; // Reference to WaveManager public Wave_management(World world) { waveManager = new WaveManager(world, Enemy. class ); // Instantiate WaveManager with the world } public void nextWave() { waveManager.nextWave(); } public class WaveManager { private int currentWave; //current wave number private int enemiesToSpawn; //Number of enemies left to spawn in the wave private int enemiesAlive; private int spawnInterval; private int spawnTimer; private int waveSize; private int wavePos; private World world; private WaveManager waveManager; public void nextWave() { waveManager.nextWave(); // Delegate the call to WaveManager } public WaveManager(World world, Class<? extends Actor> enemyClass){ currentWave = 0 ; this .world = world; enemiesAlive = 0 ; spawnInterval = 50 ; //gonna leave it at 50 may change later. spawnTimer = 0 ; waveSize = 5 ; } public void nextWave(){ currentWave = currentWave+ 1 ; if (currentWave < 10 ){ enemiesToSpawn = waveSize* 5 ; if (enemiesToSpawn> 0 ){ spawnEnemy(); spawnEnemy(); // spawn double in the final 3 to increase diff at end of waves } if (enemiesToSpawn> 3 ){ spawnEnemy(); } waveSize = waveSize+ 2 ; } } public void spawnEnemy(){ int x, y; //Randomly decide which border the enemy will spawn on int border = Greenfoot.getRandomNumber( 4 ); // 0-Top, 1-Bottom, 2-Left, 3-Right if (border == 0 ) { x = Greenfoot.getRandomNumber( 650 - 150 ) + 150 ; // Range: 150 to 650 y = 150 ; // Fixed at the top boundary } else if (border == 1 ) { x = Greenfoot.getRandomNumber( 650 - 150 ) + 150 ; // Range: 150 to 650 y = 650 ; } else if (border == 2 ) { x = 150 ; y = Greenfoot.getRandomNumber( 650 - 150 ) + 150 ; // Range: 150 to 650 } else { // Right border x = 650 ; // Fixed at the right boundary y = Greenfoot.getRandomNumber( 650 - 150 ) + 150 ; // Range: 150 to 650 } //Spawn the enemy at the position Enemy enemy = new Enemy(); world.addObject(enemy, x, y); } } //Need a nextwave function, which includes spawning enemies public void act() { } } |
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 32 33 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class MyWorld extends World { private Wave_management waveManager; public MyWorld() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super ( 800 , 800 , 1 ); waveManager = new Wave_management(); addObject(waveManager, 0 , 0 ); prepare(); } public void act() { waveManager.nextWave(); } private void prepare() { Main_Character main_Character = new Main_Character(); addObject(main_Character, 312 , 197 ); Enemy enemy = new Enemy(); addObject(enemy, 431 , 49 ); } } |