When I start my game, the background starts to play. If I hit an enemy I go the world "GameOver" with a special game over sound playing, but my background music doesnt stop. I am not sure what to need to get it so here is my Title_Screen:
Player:
MyWorld(The world where the Player hits the enemy):
GameOver :
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Title_Screen here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Title_Screen extends World
{
/**
* Constructor for objects of class Title_Screen.
*
*/
private GreenfootSound music = new GreenfootSound("background_music.mp3");
public Title_Screen()
{
// Create a new world with 600x400 cells with a cell size of 1x1 pixels.
super(1400, 884, 1);
setBackground(new GreenfootImage("TITLE SCREEN.png"));
addObject(new Plattform(),500,845);
addObject(new CopyOfPlayer(),400,740);
addObject(new Coin(),990,735);
addObject(new Coin(),1045,680);
addObject(new Coin(),1100,625);
addObject(new Coin(),1155,570);
addObject(new Coin(),1210,515);
}
public void act()
{
if(Greenfoot.isKeyDown("Enter"))
{Greenfoot.setWorld(new MyWorld());
}
}
public void stopped()
{
music.stop();
}
public void started()
{
music.playLoop();
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Player here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Player extends Actor
{
/**
* Act - do whatever the Player wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
private int vSpeed = 0;
private int accel = 1;
private int speed = 5;
private int jumpHeight= -20;
private boolean jumping = false;
private int attacking = -1;
private int animationSpeed = 2;
private int shotDelay;
boolean touchingEnemy1 = false;
private GreenfootSound music = new GreenfootSound("background_music.mp3");
private GreenfootSound sound = new GreenfootSound("GameOver_sound.mp3");
private GreenfootImage run1 = new GreenfootImage("Glumanda1right1.png");
private GreenfootImage run2 = new GreenfootImage("Glumanda2right1.png");
private GreenfootImage run3 = new GreenfootImage("Glumanda3right1.png");
private GreenfootImage run4 = new GreenfootImage("Glumanda1right2.png");
private GreenfootImage run5 = new GreenfootImage("Glumanda2right2.png");
private GreenfootImage run6 = new GreenfootImage("Glumanda3right2.png");
private GreenfootImage run7 = new GreenfootImage("Glumanda1left1.png");
private GreenfootImage run8 = new GreenfootImage("Glumanda2left1.png");
private GreenfootImage run9 = new GreenfootImage("Glumanda3left1.png");
private GreenfootImage run10 = new GreenfootImage("Glumanda1left2.png");
private GreenfootImage run11 = new GreenfootImage("Glumanda2left2.png");
private GreenfootImage run12 = new GreenfootImage("Glumanda3left2.png");
private GreenfootImage run13 = new GreenfootImage("Glumandamouth1.png");
private GreenfootImage run14 = new GreenfootImage("Glumandamouth2.png");
private GreenfootImage run15 = new GreenfootImage("Glumandamouth3.png");
private GreenfootImage run16 = new GreenfootImage("Glumandamouth4.png");
private GreenfootImage run17 = new GreenfootImage("Glumandamouth1left.png");
private GreenfootImage run18 = new GreenfootImage("Glumandamouth2left.png");
private GreenfootImage run19 = new GreenfootImage("Glumandamouth3left.png");
private GreenfootImage run20 = new GreenfootImage("Glumandamouth4left.png");
private GreenfootSound sound1 = new GreenfootSound("Bump_sound.mp3");
private GreenfootSound sound2 = new GreenfootSound("fire_sound.mp3");
private int frame = 3;
private int animationCounter = 0;
GifImage myGif = new GifImage ("Gif_PS.gif");
GifImage myGif2 = new GifImage ("Gif_PSleft.gif");
private int moveToGround;
private int direction = 1;
public void act()
{
checkFalling();
fall();
jump();
moveAround();
animationCounter ++;
fireProjectile();
platformAbove();
checkRightWalls();
checkLeftWalls();
hitEnemy();
}
public void moveAround()
{
if(Greenfoot.isKeyDown("d"))
{
setLocation(getX() + speed, getY());
direction = 1;
if(animationCounter % 8 == 0)
animateRight();
}
if(Greenfoot.isKeyDown("a"))
{
setLocation(getX() - speed, getY());
direction = -1;
if(animationCounter % 8 == 0)
animateLeft();
}
}
public void fall()
{
setLocation(getX(), getY() + vSpeed);
}
public void checkFalling()
{
if (!isTouching(Ground.class))
{
vSpeed++;
}
else
vSpeed = 0;
}
public void jump()
{
if(Greenfoot.isKeyDown("space")&& (onGround()==true))
{
vSpeed = jumpHeight;
fall();
}
}
public boolean onGround()
{
int spriteHeight = getImage().getHeight();
int yDistance = (int) (spriteHeight / 2 + 5);
Actor ground = getOneObjectAtOffset(0, getImage().getHeight()/2, Ground.class);
if(ground == null)
{
return false;
}
else
{
moveToGround(ground);
return true;
}
}
public void moveRight()
{
setLocation (getX()+speed, getY());
}
public void animateRight()
{
if (frame == 1)
{
setImage(run1);
}
else if(frame ==2)
{
setImage(run2);
}
else if(frame ==3)
{
setImage(run3);
}
else if(frame ==4)
{
setImage(run4);
}
else if(frame ==5)
{
setImage(run5);
}
else if(frame ==6)
{
setImage(run6);
frame = 1;
return;
}
frame ++;
}
public void animateLeft()
{
if (frame == 1)
{
setImage(run7);
}
else if(frame ==2)
{
setImage(run8);
}
else if(frame ==3)
{
setImage(run9);
}
else if(frame ==4)
{
setImage(run10);
}
else if(frame ==5)
{
setImage(run11);
}
else if(frame ==6)
{
setImage(run12);
frame = 1;
return;
}
frame ++;
}
public void fireProjectile()
{
if (shotDelay > 0) shotDelay--;
if (shotDelay == 0 && Greenfoot.mousePressed(null) && direction ==1)
{
shotDelay = 30;
Projectile projectile = new Projectile();
getWorld().addObject(projectile, getX(), getY());
projectile.turnTowards(18000,0);
projectile.move(110.200);
setImage(myGif.getCurrentImage());
sound1.play();
}
if (shotDelay == 0 && Greenfoot.mousePressed(null) && direction ==-1)
{
shotDelay = 30;
Projectile projectile = new Projectile();
getWorld().addObject(projectile, getX(), getY());
projectile.turnTowards(-22000,0);
projectile.move(100.1800);
setImage(myGif2.getCurrentImage());
sound1.play();
}
}
public void animatemouthright()
{
if (frame == 1)
{
setImage(run13);
}
else if(frame ==2)
{
setImage(run14);
}
else if(frame ==3)
{
setImage(run15);
}
else if(frame ==4)
{
setImage(run16);
frame = 1;
return;
}
frame ++;
}
public void animatemouthleft()
{
if (frame == 1)
{
setImage(run17);
}
else if(frame ==2)
{
setImage(run18);
}
else if(frame ==3)
{
setImage(run19);
}
else if(frame ==4)
{
setImage(run20);
frame = 1;
return;
}
frame ++;
}
boolean platformAbove()
{
int spriteHeight = getImage().getHeight();
int yDistance = (int) (spriteHeight / -2);
Actor ceiling = getOneObjectAtOffset( 0, yDistance, Ground.class);
if (ceiling != null)
{
vSpeed =1;
bopHead(ceiling);
return true;
}
else
{
return false;
}
}
public boolean checkRightWalls()
{
int spriteWidth = getImage().getWidth();
int xDistance = (int) (spriteWidth/2);
Actor rightWall = getOneObjectAtOffset (xDistance, 0, Ground.class);
if(rightWall ==null)
{
return false;
}
else
{
stopByRightWall(rightWall);
return true;
}
}
public boolean checkLeftWalls()
{
int spriteWidth = getImage().getWidth();
int xDistance = (int) (spriteWidth/-2);
Actor leftWall = getOneObjectAtOffset (xDistance, 0, Ground.class);
if(leftWall ==null)
{
return false;
}
else
{
stopByLeftWall(leftWall);
return true;
}
}
public void stopByRightWall(Actor rightWall)
{
int wallWidth = rightWall.getImage().getWidth();
int newX = rightWall.getX() -(wallWidth + getImage().getWidth())/2;
setLocation(newX -5, getY());
}
public void stopByLeftWall(Actor leftWall)
{
int wallWidth = leftWall.getImage().getWidth();
int newX = leftWall.getX() -(wallWidth + getImage().getWidth())/-2;
setLocation(newX -5, getY());
}
public void bopHead(Actor ceiling)
{
int ceilingHeight = ceiling.getImage().getHeight();
int newY = ceiling.getY() + (ceilingHeight + getImage().getHeight())/2;
setLocation(getX(), newY);
sound1.play();
}
public void moveToGround(Actor ground)
{
int groundHeight = ground.getImage().getHeight();
int newY = ground.getY() - (groundHeight + getImage().getHeight())/2;
setLocation(getX(), newY);
}
public void hitEnemy()
{
Actor Enemy =getOneIntersectingObject(Enemy.class);
if(Enemy != null)
{
World myWorld = getWorld();
Greenfoot.setWorld(new GameOver());
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class MyWorld here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class MyWorld extends World
{
public ImgScroll scroller;
private Player player;
HealthBar healthbar = new HealthBar();
private GreenfootSound music = new GreenfootSound("background_music.mp3");
/**
* Constructor for objects of class MyWorld.
*
*/
public MyWorld()
{
// Create a new world with 600x400 cells with a cell size of 1x1 pixels.
super(1400, 884, 1, false);
setBackground(new GreenfootImage("Hintergrund.png"));
addObject(new Quadrat3(),377,533);
addObject(new side_right(),432,532);
addObject(new Box(),31,484);
addObject(new Box(),95,484);
addObject(new Box(),31,418);
addObject(new Back1(),175,685);
addObject(new Door_closed(),84,742);
addObject(new Mast(),274,684);
addObject(new Torch_Stick(),184,685);
addObject(new Torch(),185,646);
addObject(new Fass(),23,354);
addObject(new Plattform2(),198,529);
addObject(new Plattform2(),158,529);
addObject(new Plattform(),0,845);
addObject(new Plattform(),300,845);
addObject(new Plattform(),600,845);
addObject(new Plattform(),900,845);
addObject(new Plattform(),1200,845);
addObject(new Plattform(),1500,845);
addObject(new Plattform(),1800,845);
addObject(new Plattform(),2100,845);
addObject(new Plattform(),2400,845);
addObject(new Plattform(),2700,845);
addObject(new Plattform(),3000,845);
addObject(new Plattform(),3300,845);
addObject(new Plattform(),3600,845);
addObject(new Plattform(),3900,845);
addObject(new Plattform(),4200,845);
addObject(new Plattform(),4500,845);
addObject(new Plattform(),4800,845);
addObject(new Plattform(),5100,845);
addObject(new Plattform(),5400,845);
addObject(new Plattform(),5700,845);
addObject(new Plattform(),6000,845);
addObject(new Enemy1(),1000,750);
addObject(player = new Player(), 70, 750);
scroller = new ImgScroll(this, new GreenfootImage("Hintergrund.png"), 6000, 884);
for (int j=0; j<scroller.getScrollHeight()-100; j+=300)
for (int i=0; i<scroller.getScrollWidth()-200; i+=300)
prepare();
}
/**
* Prepare the world for the start of the program.
* That is: create the initial objects and add them to the world.
*/
private void prepare()
{
}
public void act ()
{
scroller.scroll(getWidth()/2-player.getX(), getHeight()/2-player.getY());
}
public HealthBar getHealthBar()
{
return healthbar;
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class GameOver here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class GameOver extends World
{
private GreenfootSound sound = new GreenfootSound("GameOver_sound.mp3");
/**
* Constructor for objects of class GameOver.
*
*/
public GameOver()
{
super(1400, 884, 1);
setBackground(new GreenfootImage("Game_Over.png"));
music();
}
public void music()
{
sound.play();
}
}
