I am trying to use a score in this game. Why is it when my world code is this (see below) it doesn't work but if I change it to this code (showing after bold heading) it does?
New code
public class Space extends World { public Space() { super(800, 600, 1); Color black = new Color(0,0,0); GreenfootImage background = getBackground(); background.setColor(black); background.fill(); createStars(300); setPaintOrder(Player.class, Missile.class, GameOver.class, Explosion.class); spawnPlayer(); spawnGunner(); spawnGunner(); spawnKamikaze(); spawnScore(); } private void createStars(int number) /** * adds stars randomly to world */ { { for (int i = 0; i < number; i++) { int x = Greenfoot.getRandomNumber( getWidth() ); int y = Greenfoot.getRandomNumber( getHeight() ); addObject(new Star(), x, y); } } } public void spawnPlayer() /** * sets position of spawn for player */ { addObject(new Player(), 50, 300); } public void spawnGunner() { /** * spawn Gunner class on right side of screen at random y-value */ addObject(new Gunner(score_field), 700, Greenfoot.getRandomNumber(getHeight())); } public void spawnKamikaze() { /** * spawn Kamikaze class on right side of screen at random y-value */ addObject(new Kamikaze(score_field), 700, Greenfoot.getRandomNumber(getHeight())); } public void spawnScore() { /** * spawn counter in to-left corner, sets reference for counter */ Score score_field = new Score(); addObject(score_field, 35, 20); } }
public class Space extends World { public Space() /** * sets background to solid black color, has 300 stars on screen at once, spawns ship and enemies, * keeps missiles under ship and explosions under everything except enemies, spawn counter */ { super(800, 600, 1); Color black = new Color(0,0,0); GreenfootImage background = getBackground(); background.setColor(black); background.fill(); createStars(300); setPaintOrder(Player.class, Missile.class, GameOver.class, Explosion.class); Score score_field = new Score(); addObject(score_field, 35, 20); addObject(new Player(), 50, 300); addObject(new Gunner(score_field), 700, Greenfoot.getRandomNumber(getHeight())); addObject(new Gunner(score_field), 700, Greenfoot.getRandomNumber(getHeight())); addObject(new Kamikaze(score_field), 700, Greenfoot.getRandomNumber(getHeight())); } private void createStars(int number) /** * adds stars randomly to world */ { { for (int i = 0; i < number; i++) { int x = Greenfoot.getRandomNumber( getWidth() ); int y = Greenfoot.getRandomNumber( getHeight() ); addObject(new Star(), x, y); } } } }