So I've tried making the Bullet a subclass of Counter and vise versa. When I do what I think would work I get some message similiar to: non static method cannot be referenced from a static context.
Pretty much when the bullet hits the asteroid and the checkCollision method called upon I need the counter to go up. Thanks in advance.....and yes the counter came precoded, as you can probably tell since the code actually looks clean =\.
import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)
import java.awt.Font;
/**
* Counter that displays a number.
*
* @author Michael Kolling
* @version 1.0.1
*/
public class Counter extends Actor
{
private int value = 0;
private int target = 0;
private String text;
private int stringLength;
public Counter()
{
this("");
}
public Counter(String prefix)
{
text = prefix;
stringLength = (text.length() + 2) * 16;
setImage(new GreenfootImage(stringLength, 24));
GreenfootImage image = getImage();
Font font = image.getFont();
image.setFont(font.deriveFont(24.0F)); // use larger font
updateImage();
}
public void act() {
if(value < target) {
value++;
updateImage();
}
else if(value > target) {
value--;
updateImage();
}
}
public void add(int score)
{
target += score;
}
public void subtract(int score)
{
target -= score;
}
public int getValue()
{
return value;
}
/**
* Make the image
*/
private void updateImage()
{
GreenfootImage image = getImage();
image.clear();
image.drawString(text + value, 1, 18);
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Bullet here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Bullet extends Actor
{
/**
* Act - do whatever the Bullet wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
setLocation(getX(), getY()-5);
if (!checkHeight())
{
checkCollision();
}
}
public void checkCollision()
{
Actor a = getOneIntersectingObject(Asteroid.class);
Actor b = getOneIntersectingObject(Bullet.class);
if (a != null)
{
World world = getWorld();
world.removeObject(a);
world.removeObject(this);
Greenfoot.playSound("explosion.wav");
}}
private boolean checkHeight() {
if(getY()<=37) {
World world= getWorld();
world.removeObject(this);
return true;
}
return false;
}
}

