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
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);
}
}
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;
}
}
}

