I have written a spawning mechanism for my game. It spawns in waves of enemies when spawnWave() is called.
I want the position for each spawned enemy to be random from a few set choices, but not repeating, so I don't end up with two enemies in the same place.
Here is my current spawn mechanism:
So I need to make "position" set randomly, that'd be done with "Greenfoot.getRandomNumber(4)+1;" but then I need to make it that next time spawn is called, it wont use previous values until a whole new wave is called.
Your assistance is greatly appreciated.
public void spawnWave()
{
if (waveSpawnDelay == 0)
{
waveTime = 0; //not relevant
waveSpawnDelay = 50; //not relevant
wave ++; //adds to the wavecount
updateWaveCount(); //displays new count, not relevant
spawnPower = wave; //sets the total amount of spawnPower that can be used in making this wave
possition = 1; //starts at position 1, to be replaced with a random number 1-4
while (spawnPower > 0 && possition <= 4)
{
spawn();
}
}
}
public void spawn()
{
objectID = (Greenfoot.getRandomNumber(2)+1); //choose a random enemy to spawn, at the moment there are only 2, adds 1 onto it to avoid 0
while (objectID > spawnPower)
{
objectID = (Greenfoot.getRandomNumber(2)+1); //get a new object if over the quota (spawnPower)
}
switch(possition) //the set positions for spawn (the corners of the arena)
{
case 1: xPlacement = 25; yPlacement = 50; break;
case 2: xPlacement = 825; yPlacement = 650; break;
case 3: xPlacement = 25; yPlacement = 650; break;
case 4: xPlacement = 825; yPlacement = 50; break;
}
possition++; //add 1 so that next time it uses the next position ie, 1, then 2, etc
switch(objectID)
{
case 1: addObject(new blade(wave), xPlacement, yPlacement); break; //enemy 1
case 2: addObject(new lineTank(wave), xPlacement, yPlacement); break; //enemy 2
//case 3: addObject(new ...(wave), xPlacement, yPlacement)); break; //these enemies haven't been made yet
//case 4: addObject(new ...(wave), xPlacement, yPlacement)); break;
//case 5: addObject(new ...(wave), xPlacement, yPlacement)); break;
//case 6: addObject(new ...(wave), xPlacement, yPlacement)); break;
//case 7: addObject(new ...(wave), xPlacement, yPlacement)); break;
//case 8: addObject(new ...(wave), xPlacement, yPlacement)); break;
}
spawnPower -= objectID; //subtract, the power used to make the object (objectID), from spawnPower
enemies ++; //add to the enemy count, not relevant
addObject (new flash(), xPlacement, yPlacement); //a pretty puff, not relevant
}
