This site requires JavaScript, please enable it in your browser!
Greenfoot back
pr2alede
pr2alede wrote ...

2015/2/10

Bullet and Score

pr2alede pr2alede

2015/2/10

#
I have a game where a spaceship shoots a bullet and kills the enemy. Currently everything works apart from when the game needs to update the score i.e when a bullet hits a enemy the score goes up one. Here is the code for the bullet
import greenfoot.*;
/**
 * @author Dafydd 
 * @version 1.0
 */
public class Bullet extends Animal
{
    private int direction, speed;
    private int counter = 0;
    private Score score;
    public Bullet(int dir, Score pointcounter)
    {
        direction = dir;
        speed = 15;
        score = pointcounter;
    }

    public void act()
    {
        setRotation(direction);
        move(speed);
        eat();
        if( atWorldEdge() ) {
            getWorld().removeObject(this);
        }
    }

    public void eat()
    {
        if( canSee(Bady1.class) ) {
            eat(Bady1.class);
            score.add (1);
        }
    }

    public void hitEnemy() {
        Boss1 enemy = (Boss1) getOneObjectAtOffset(0, 0, Boss1.class);
        if (enemy != null) {
            enemy.setHealth(-1);
            getWorld().removeObject(this);
            score.add (1);
        }
        Boss2 enemy2 = (Boss2) getOneObjectAtOffset(0, 0, Boss2.class);
        if (enemy != null) {
            enemy.setHealth(-1);
            getWorld().removeObject(this);
            score.add (1);
        }
        Boss3 enemy3 = (Boss3) getOneObjectAtOffset(0, 0, Boss3.class);
        if (enemy != null) {
            enemy.setHealth(-1);
            getWorld().removeObject(this);
            score.add (1);
        }
        Boss4 enemy4 = (Boss4) getOneObjectAtOffset(0, 0, Boss4.class);
        if (enemy != null) {
            enemy.setHealth(-1);
            getWorld().removeObject(this);
            score.add (1);
        }
        FBoss enemy5 = (FBoss) getOneObjectAtOffset(0, 0, FBoss.class);
        if (enemy != null) {
            enemy.setHealth(-1);
            getWorld().removeObject(this);
            score.add (1);
        }
    }

}
danpost danpost

2015/2/10

#
The code in question is your World subclass code that creates and adds the Counter object into the world and passes a reference of it through the class of the player to the Bullet constructor.
pr2alede pr2alede

2015/2/12

#
This is the ship code
import greenfoot.*;
/**
 * @author Dafydd 
 * @version 1.0
 */
public class Ship extends Animal
{
    private GreenfootImage image1 = new GreenfootImage("SpaceShip1.png");
    private GreenfootImage image2 = new GreenfootImage("SpaceShip1 Forwards.png");
    private GreenfootImage image3 = new GreenfootImage("SpaceShip1 Left.png");
    private GreenfootImage image4 = new GreenfootImage("SpaceShip1 Right.png");
    private GreenfootImage image5 = new GreenfootImage("SpaceShip1 Right Forwards.png");
    private GreenfootImage image6 = new GreenfootImage("SpaceShip1 Left Forwards.png");
    private int shotTimer = 0;
    public Score score;
    public void act() 
    {
        movement();
        switchImage();
    }    

    public void movement()
    {
        if( Greenfoot.isKeyDown("left") ) {
            turn (-10);
        }
        if( Greenfoot.isKeyDown("right") ) {
            turn (10);
        } 
        if( Greenfoot.isKeyDown("up") ) {
            move (6);
        }
        if (shotTimer >0) {
            shotTimer = shotTimer -1;}
        else if (Greenfoot.isKeyDown("space") ) 
        {
            getWorld().addObject(new Bullet(getRotation(),score), getX(), getY());
            shotTimer = 10;
        }
    }

    public void switchImage()
    {
        if(Greenfoot.isKeyDown("up")) {
            setImage ( image2 );
        }
        if(Greenfoot.isKeyDown("right") ) {
            setImage ( image4 );
        }
        if(Greenfoot.isKeyDown("left") ) {
            setImage ( image3 );
        }
        if(Greenfoot.isKeyDown("up") && Greenfoot.isKeyDown("right") ) {
            setImage ( image5 );
        }
        if(Greenfoot.isKeyDown("up") && Greenfoot.isKeyDown("left") ) {
            setImage ( image6 );
        }
    }
}
pr2alede pr2alede

2015/2/12

#
As you can see I have tried to make a reference when the bullet is created.
danpost danpost

2015/2/12

#
danpost wrote...
The code in question is your World subclass code
Please post the code in question.
You need to login to post a reply.