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

2015/2/14

Counter not working (or .getCounter method error)

NDDR NDDR

2015/2/14

#
Hello! I am pretty new to Greenfoot and I am not yet an expert when it comes to complex coding. My scenario is a chase game. It is about a dart that pops balloons and once it pops one, a score is added to the counter. The chaser is an aerial bomb, which triggers the game over event. For some reason, I could not get my counter to work despite trying to alter my codes in my different Actors. I used the eat method instead of other methods. Here are the codes for the dart:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Nest here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Dart extends Actor
{
    /**
     * Act - do whatever the Dart wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
private Balloon6 target;
public void act()
{
    if (Greenfoot.mouseMoved(null))
    {
        MouseInfo mouse = Greenfoot.getMouseInfo();
        setLocation(mouse.getX(), mouse.getY());
    }
    eat();
}
public void eat()
    {
        Actor food;
        food=getOneObjectAtOffset(0,0,Balloon6.class);
        if (food!=null)
        {
            World world;
            world=getWorld();
            world.removeObject(food);
            Level1 level1 = (Level1)world;
            Counter counter = level1.getCounter ();
            counter.addScore();
        }
}
}
And these are the balloon's:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Balloon6 here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Balloon6 extends Actor
{
    /**
     * Act - do whatever the Balloon6 wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        moveAround();
    }
    public void moveAround()
    {
        move(1);
        if(Greenfoot.getRandomNumber(100)<10)
        {
            turn(Greenfoot.getRandomNumber(90)-45);
        }
        if(getX()<=5||getX()>=getWorld().getWidth()-5)
        {
            turn(180);
        }      
        if(getY()<=5||getY()>=getWorld().getHeight()-5)
        {
            turn(180);
        } 
    }
}
And these are the bomb's:
import greenfoot.*;

/**
 * Write a description of class Bomb here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Bomb extends Actor
{
    int value = 4;
    int x,y;
    int counter = 0;
    int speed = 0;
    private Dart target;
    public void act() 
    {
    x = getX();
    move(4);
    y = getY();
    turnTowards();
        if (isTouching(Dart.class)) 
    {
        World world;
        world=getWorld();
        GameOver gameover = new GameOver();
        world.addObject(gameover, world.getWidth()/2, world.getHeight()/2);
        Greenfoot.stop(); 
    }
    }
    public void turnTowards()
    {
        if(target == null)
        {
        if(!getWorld().getObjects(Dart.class).isEmpty())
        {
            target = (Dart) getWorld().getObjects(Dart.class).get(0);
        }
        }
        if(target != null)
        {
            int xDiff = target.getX() - getX(),
            yDiff = target.getY() - getY();
            double angle = Math.toDegrees(Math.atan2(yDiff, xDiff));
            setRotation((int)Math.round(angle));
        }
    }
}
(I have a gut feeling that the int's at the beginning are useless) And these are the codes for the world (it's pretty long):
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Level1 here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Level1 extends World
{
    Counter counter = new Counter();
    /**
     * Constructor for objects of class Level1.
     * 
     */
    public Level1()
   
    {
        super(1000, 500, 1); 
        prepare ();
    }
    public Counter getCounter()
    {
        return counter;
    }       
    public void prepare()
    { 
        Balloon6 balloon6 = new Balloon6();
        addObject(balloon6, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon62 = new Balloon6();
        addObject(balloon62, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon63 = new Balloon6();
        addObject(balloon63, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon64 = new Balloon6();
        addObject(balloon64, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon65 = new Balloon6();
        addObject(balloon65, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon66 = new Balloon6();
        addObject(balloon66, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon67 = new Balloon6();
        addObject(balloon67, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon68 = new Balloon6();
        addObject(balloon68, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon69 = new Balloon6();
        addObject(balloon69, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon610 = new Balloon6();
        addObject(balloon610, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon611 = new Balloon6();
        addObject(balloon611, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon612 = new Balloon6();
        addObject(balloon612, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon613 = new Balloon6();
        addObject(balloon613, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon614 = new Balloon6();
        addObject(balloon614, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon615 = new Balloon6();
        addObject(balloon615, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon616 = new Balloon6();
        addObject(balloon616, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon617 = new Balloon6();
        addObject(balloon617, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon618 = new Balloon6();
        addObject(balloon618, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon619 = new Balloon6();
        addObject(balloon619, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon620 = new Balloon6();
        addObject(balloon620, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon621 = new Balloon6();
        addObject(balloon621, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon622 = new Balloon6();
        addObject(balloon622, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon623 = new Balloon6();
        addObject(balloon623, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon624 = new Balloon6();
        addObject(balloon624, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon625 = new Balloon6();
        addObject(balloon625, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon626 = new Balloon6();
        addObject(balloon626, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon627 = new Balloon6();
        addObject(balloon627, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon628 = new Balloon6();
        addObject(balloon628, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon629 = new Balloon6();
        addObject(balloon629, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon630 = new Balloon6();
        addObject(balloon630, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon631 = new Balloon6();
        addObject(balloon631, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon632 = new Balloon6();
        addObject(balloon632, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon633 = new Balloon6();
        addObject(balloon633, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon634 = new Balloon6();
        addObject(balloon634, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon635 = new Balloon6();
        addObject(balloon635, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon636 = new Balloon6();
        addObject(balloon636, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon637 = new Balloon6();
        addObject(balloon637, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon638 = new Balloon6();
        addObject(balloon638, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon639 = new Balloon6();
        addObject(balloon639, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon640 = new Balloon6();
        addObject(balloon640, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon641 = new Balloon6();
        addObject(balloon641, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon642 = new Balloon6();
        addObject(balloon642, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon643 = new Balloon6();
        addObject(balloon643, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon644 = new Balloon6();
        addObject(balloon644, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon645 = new Balloon6();
        addObject(balloon645, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon646 = new Balloon6();
        addObject(balloon646, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon647 = new Balloon6();
        addObject(balloon647, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon648 = new Balloon6();
        addObject(balloon648, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon649 = new Balloon6();
        addObject(balloon649, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon650 = new Balloon6();
        addObject(balloon650, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon651 = new Balloon6();
        addObject(balloon651, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon652 = new Balloon6();
        addObject(balloon652, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon653 = new Balloon6();
        addObject(balloon653, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon654 = new Balloon6();
        addObject(balloon654, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon655 = new Balloon6();
        addObject(balloon655, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon656 = new Balloon6();
        addObject(balloon656, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon657 = new Balloon6();
        addObject(balloon657, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon658 = new Balloon6();
        addObject(balloon658, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon659 = new Balloon6();
        addObject(balloon659, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon660 = new Balloon6();
        addObject(balloon660, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon661 = new Balloon6();
        addObject(balloon661, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon662 = new Balloon6();
        addObject(balloon662, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon663 = new Balloon6();
        addObject(balloon663, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon664 = new Balloon6();
        addObject(balloon664, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon665 = new Balloon6();
        addObject(balloon665, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon666 = new Balloon6();
        addObject(balloon666, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon667 = new Balloon6();
        addObject(balloon667, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon668 = new Balloon6();
        addObject(balloon668, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon669 = new Balloon6();
        addObject(balloon669, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon670 = new Balloon6();
        addObject(balloon670, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon671 = new Balloon6();
        addObject(balloon671, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon672 = new Balloon6();
        addObject(balloon672, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon673 = new Balloon6();
        addObject(balloon673, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon674 = new Balloon6();
        addObject(balloon674, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon675 = new Balloon6();
        addObject(balloon675, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon676 = new Balloon6();
        addObject(balloon676, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon677 = new Balloon6();
        addObject(balloon677, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon678 = new Balloon6();
        addObject(balloon678, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon679 = new Balloon6();
        addObject(balloon679, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon680 = new Balloon6();
        addObject(balloon680, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon681 = new Balloon6();
        addObject(balloon681, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon682 = new Balloon6();
        addObject(balloon682, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon683 = new Balloon6();
        addObject(balloon683, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon684 = new Balloon6();
        addObject(balloon684, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon685 = new Balloon6();
        addObject(balloon685, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon686 = new Balloon6();
        addObject(balloon686, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon687 = new Balloon6();
        addObject(balloon687, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon688 = new Balloon6();
        addObject(balloon688, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon689 = new Balloon6();
        addObject(balloon689, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon690 = new Balloon6();
        addObject(balloon690, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon691 = new Balloon6();
        addObject(balloon691, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon692 = new Balloon6();
        addObject(balloon692, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon693 = new Balloon6();
        addObject(balloon693, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon694 = new Balloon6();
        addObject(balloon694, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon695 = new Balloon6();
        addObject(balloon695, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon696 = new Balloon6();
        addObject(balloon696, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon697 = new Balloon6();
        addObject(balloon697, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon698 = new Balloon6();
        addObject(balloon698, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Balloon6 balloon699 = new Balloon6();
        addObject(balloon699, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
        Bomb bomb = new Bomb();
        addObject(bomb, 89, 469);
        Dart dart = new Dart();
        addObject(dart, 78, 62);
        Counter counter = new Counter();
        addObject(counter, 47, 14);
        bomb.setLocation(281, 29);
        dart.setLocation(83, 472);
        bomb.setLocation(91, 44);
    }
}
And lastly, the counter's:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
/**
 * Write a description of class Counter here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Counter extends Actor
{
int score = 0;
/**
 * Act - do whatever the Counter wants to do. This method is called whenever
 * the 'Act' or 'Run' button gets pressed in the environment.
 */
public void act() 
{
    setImage(new GreenfootImage("Score : " + score,30, Color.WHITE, Color.BLUE));
}
public void addScore()
{
    score++;
}
}
I would be really grateful if someone points out my errors. :)
danpost danpost

2015/2/14

#
Line 230 of your Level1 class creates a local variable called 'counter'. The name 'counter' for the field declared on line 11 is shadowed by the local variable declared on line 230. Instead of declaring a local variable with 'Counter counter', just refer to the field declared on line 11 with 'counter' (or 'this.counter').
danpost danpost

2015/2/14

#
As far as the ints being useless -- none are used in the class except for the x and y fields and they can be declared locally (within the method) as their values are not used before being set new values in the act method. Also, there is a 'turnTowards' method in the Actor class that you can use. You can eplace lines 42 through 45 of the Bomb class with this:
turnTowards(target.getX(), target.getY());
You might consider using a loop ('while' or 'for') to create and randomly place the balloons in the world. For example:
while (getObjects(Balloon6.class).size() < 100)
{
    // add one balloon
}
NDDR NDDR

2015/2/14

#
It's finally fixed! Thank you very much for the fast reply and for the correcting my errors, danpost. :D
You need to login to post a reply.