Hi again, I'm getting a problem in my program where for some reason, once the program moves onto the second level, it skips it and goes straight onto the third one, also messing up some of events that happen in the third world. Now, program was working Ok before, however, once I added in some code to stop the music that was playing forever (Which was started in my world 'outerEarth'), things started to go crazy, as I tried to play the previous music from the start of the second world and added in new music for my world 'asteroidField'.
I think it would be better to show you the code I have for all 3 of my worlds to see if you can see the problem (Cause I can't see it).
1st World - Outer Earth
2nd Level - Space
3rd level - Asteroid field
If you need any additional information, let me know. Thank you for taking your time to read this.
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
/**
* Write a description of class outerEarth here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class outerEarth extends Levels
{
private int countAsteroids;
private spaceShip myShip;
GreenfootSound music1 = new GreenfootSound("Level1_music.mp3");
/**
* Constructor for objects of class outerEarth.
*
*/
public outerEarth()
{
// Create a new world with 600x400 cells with a cell size of 1x1 pixels.
super();
setPaintOrder(asteroid1.class, spaceShip.class, Stars2.class);
GreenfootImage background = getBackground();
background.setColor(new Color(25,25,115));
background.fill();
myShip = new spaceShip();
addObject(myShip, 100, 300);
createStars(70);
countAsteroids = 0;
}
public void started()
{
music1.playLoop();
}
public void stopped()
{
music1.stop();
}
public void act()
{
started();
if (countAsteroids < 42)
{
addAsteroid();
}
else
{
stopped();
Greenfoot.setWorld(new Space(myShip.getX(), myShip.getY()));
}
}
private void addAsteroid()
{
if (Greenfoot.getRandomNumber(250) < 3)
{
addObject(new asteroid1(), 999, Greenfoot.getRandomNumber(529)+10);
countAsteroids = countAsteroids + 1;
}
}
private void createStars(int number)
{
GreenfootImage background = getBackground();
for(int i=0; i < number; i++)
{
int x = Greenfoot.getRandomNumber( getWidth() );
int y = Greenfoot.getRandomNumber( getHeight()/2 );
addObject(new Stars2(), x, y);
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
/**
* Write a description of class Space here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Space extends Levels
{
private int countAsteroids;
private spaceShip myShip;
GreenfootSound music2 = new GreenfootSound("Level1_music.mp3");
/**
* Constructor for objects of class Space.
*
*/
public Space(int myX, int myY)
{
// Create a new world with 600x400 cells with a cell size of 1x1 pixels.
super();
setPaintOrder(asteroid1.class, asteroid2.class, spaceShip.class, Stars.class);
myShip = new spaceShip();
addObject(myShip, myX, myY);
GreenfootImage background = getBackground();
background.setColor(Color.BLACK);
background.fill();
createStars(300);
countAsteroids = 0;
}
public void started()
{
music2.playLoop();
}
public void stopped()
{
music2.stop();
}
public void act()
{
started();
if (countAsteroids < 55)
{
addAsteroid();
}
else
stopped();
Greenfoot.setWorld(new asteroidField(myShip.getX(), myShip.getY()));
}
private void createStars(int number)
{
GreenfootImage background = getBackground();
for(int i=0; i < number; i++)
{
int x = Greenfoot.getRandomNumber( getWidth() );
int y = Greenfoot.getRandomNumber( getHeight() );
addObject(new Stars(), x, y);
}
}
private void addAsteroid()
{
if (Greenfoot.getRandomNumber(250) < 3)
{
addObject(new asteroid1(), 999, Greenfoot.getRandomNumber(529)+10);
countAsteroids = countAsteroids + 1;
}
if (Greenfoot.getRandomNumber(600) < 2)
{
addObject(new asteroid2(), 999, Greenfoot.getRandomNumber(529)+10);
countAsteroids = countAsteroids + 1;
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
/**
* Write a description of class asteroidField here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class asteroidField extends Levels
{
private int countAsteroids;
private spaceShip myShip;
private boolean added = false;
GreenfootSound music3 = new GreenfootSound("Level3_music.mp3");
GreenfootSound music4 = new GreenfootSound("Boss_music.mp3");
/**
* Constructor for objects of class asteroidField.
*
*/
public asteroidField(int myX, int myY)
{
// Create a new world with 600x400 cells with a cell size of 1x1 pixels.
super();
setPaintOrder(asteroid1.class, asteroid2.class, asteroid3.class, Astercore.class , asteroid4.class , spaceShip.class, dark_asteroid1.class, Stars.class);
myShip = new spaceShip();
addObject(myShip, myX, myY);
GreenfootImage background = getBackground();
background.setColor(Color.BLACK);
background.fill();
createStars(55);
createAsteroids(12);
countAsteroids = 0;
added=false;
}
public void started()
{
music3.playLoop();
}
public void stopped()
{
music3.stop();
}
public void act()
{
started();
if (countAsteroids < 46)
{
addAsteroid();
}
else
stopped();
if(added==false)
{
music4.playLoop();
addObject(new Astercore(), 960, 300);
added=true;
}
}
private void addAsteroid()
{
if (Greenfoot.getRandomNumber(250) < 3)
{
addObject(new asteroid1(), 999, Greenfoot.getRandomNumber(529)+10);
countAsteroids = countAsteroids + 1;
}
if (Greenfoot.getRandomNumber(600) < 2)
{
addObject(new asteroid2(), 999, Greenfoot.getRandomNumber(529)+10);
countAsteroids = countAsteroids + 1;
}
if (Greenfoot.getRandomNumber(660) < 3)
{
addObject(new asteroid3(), 999, Greenfoot.getRandomNumber(529)+10);
countAsteroids = countAsteroids + 1;
}
}
private void createStars(int number)
{
GreenfootImage background = getBackground();
for(int i=0; i < number; i++)
{
int x = Greenfoot.getRandomNumber( getWidth() );
int y = Greenfoot.getRandomNumber( getHeight() );
addObject(new Stars(), x, y);
}
}
private void createAsteroids(int number)
{
GreenfootImage background = getBackground();
for(int i=0; i < number; i++)
{
int x = Greenfoot.getRandomNumber( getWidth() );
int y = Greenfoot.getRandomNumber( getHeight() );
addObject(new dark_asteroid1(), x, y);
}
}
}
