I have a problem where the main actor is going throughout the world and as he scrolls up enemies randomly spawn in a given area. What I am trying to do is to in some sort delay the spawning of the enemy if the character is in close range to where the enemy might spawn. Any help is greatly appreciated. Thanks in advance.
Here is the enemy code
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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class doodleWorld here. * * @author (your name) * @version (a version number or a date) */ public class doodleWorld extends World { private boolean bStarted, started = false ; private int enemySpawnTimeMax= 1000 * 4 , enemySpawnTimer=enemySpawnTimeMax; private int enemy1SpawnTimeMax= 1000 * 3 , enemy1SpawnTimer=enemy1SpawnTimeMax; private int enemy2SpawnTimeMax= 1000 * 2 , enemy2SpawnTimer=enemy2SpawnTimeMax; private boolean once; private int transparency = 0 ; public int scrollSpeed; public boolean scroll; public boolean fall; private boolean hitEnemy; public boolean ended; private int restart; //private int enemySpawnTimer; public int height = 0 ; public int doodleX; /** * Constructor for objects of class doodleWorld. * */ public doodleWorld() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super ( 300 , 400 , 1 , false ); addObject( new ground(), 56 , 317 ); addObject( new doodler( false ), 56 , 200 ); setPaintOrder(scoreKeeper. class , doodler. class , ground. class , ammo. class ); setBackground( "title.png" ); getBackground().setTransparency( 255 ); once = true ; started = false ; height = 0 ; fall = false ; hitEnemy = false ; ended = false ; } public void act() { if (bStarted== false & Greenfoot.mouseMoved( this )) { bStarted = true ; } if (started== false & bStarted== true ) { MouseInfo mouse = Greenfoot.getMouseInfo(); if (Greenfoot.mouseClicked( this )) { if (mouse.getX()>= 45 & mouse.getX()<= 148 && mouse.getY()>= 104 & mouse.getY()<= 138 ) { started = true ; } } } if (started== true & once== true ) { setBackground( "paper.png" ); cleanup(); once = false ; setLevel( 1 ); } if (fall) { end(); } if (hitEnemy) { end(); } if (--enemySpawnTimer == 0 ) { enemySpawnTimer = enemySpawnTimeMax; addObject( new Enemy(), Greenfoot.getRandomNumber( 290 ), 30 ); } if (--enemy1SpawnTimer == 0 ) { enemy1SpawnTimer = enemy1SpawnTimeMax; addObject( new enemy1(), Greenfoot.getRandomNumber( 35 )+ 30 , 35 ); } if (--enemy2SpawnTimer == 0 ) { enemy2SpawnTimer = enemy2SpawnTimeMax; addObject( new enemy2(), Greenfoot.getRandomNumber( 125 )+ 100 , 50 ); } //runEnemySpawnTimer(); } /*private void runEnemySpawnTimer() { enemySpawnTimer = (enemySpawnTimer+1)%500; // adjust '300' as desired if (enemySpawnTimer == 0) spawnEnemy(); } private void spawnEnemy() { addObject(new Enemy(), 200,50); }*/ public void cleanup() { removeObjects(getObjects(doodler. class )); removeObjects(getObjects(ground. class )); removeObjects(getObjects(Enemy. class )); } public void setLevel( int level) { switch (level) { case 1 : gamePlay(); break ; } } public void gamePlay() { addObject( new doodler(), getWidth()/ 2 , 300 ); addObject( new ground( false ), 28 , 391 ); addObject( new ground( false ), 83 , 391 ); addObject( new ground( false ), 83 + 55 , 391 ); addObject( new ground( false ), 83 + 55 + 55 , 391 ); addObject( new ground( false ), 83 + 55 + 55 + 55 , 391 ); addObject( new ground( false ), 83 + 55 + 55 + 55 + 55 , 391 ); addObject( new ground(), Greenfoot.getRandomNumber( 300 ), 250 ); addObject( new ground(), Greenfoot.getRandomNumber( 300 ), 150 ); addObject( new ground(), Greenfoot.getRandomNumber( 300 ), 50 ); addObject( new scoreKeeper(), 253 , 385 ); } public void end() { cleanup(); /*started=false; bStarted=false; addObject(new ground(), 56, 317); addObject(new doodler(false), 56,200); setBackground("title.png"); getBackground().setTransparency(255); once = true; started = false; height = 0; fall = false; ended = false;*/ addObject( new GameOver(),getWidth()/ 2 ,getHeight()/ 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 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 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class enemy here. * * @author (your name) * @version (a version number or a date) */ public class Enemy extends Actor { double ys, xs; int xSpeed = 3 ; int x_pos, y_pos; public void act() { if (((doodleWorld) getWorld()).scroll== true ) { scroll(((doodleWorld) getWorld()).scrollSpeed); } if (((doodleWorld) getWorld()).fall== true ) { fall(((doodleWorld) getWorld()).scrollSpeed); } if (y_pos < 0 ) { getWorld().removeObject( this ); return ; } move(); checkEdges(); } public void fall( int speed) { if (((doodleWorld) getWorld()).ended== false ) { y_pos = y_pos + speed; setLocation(x_pos, y_pos); } } protected void addedToWorld(World world) { x_pos = getX(); y_pos = getY(); } public void scroll( int speed) { if (speed> 0 ) { y_pos = y_pos + speed; setLocation(getX(), y_pos); } } public void fall() { ((doodleWorld) getWorld()).fall = true ; ((doodleWorld) getWorld()).scrollSpeed = ( int ) -ys; } /*private void objectTooClose(World world) { if ( ! getObjectsInRange(200, Enemy.class).isEmpty() || ! getObjectsInRange(200, doodler.class).isEmpty() ) { if (Enemy.class != null) getWorld().removeObject(this); } }*/ public void move() { move(xSpeed); } public void checkEdges() { if (getX() >= 260 ) { xSpeed = - 3 ; } if (getX() <= 35 ) { xSpeed = 3 ; } } } |