Hey Greenfooters.
I'm having some trouble getting counters to work consistently. I just quickly wrote up 2 programs. In the first one, the counter works perfectly. In the second one, it doesn't work at all. I can't see any major differences between the two, so I'm hoping you guys could shed some light on to why things aren't working as they should be.
Game 1: Bee World (Working Counter)
beeWorld (World Class):
bee (Predator Class):
ant (Prey Class):
Counter:
Game 2: Fish World (Non-Working Counter)
fishWorld (World Class):
fish (Predator Class):
mouse (Prey Class):
counter:
Thanks!
import greenfoot.*;
public class beeWorld extends World
{
Counter counter = new Counter();
public beeWorld()
{
super(600, 400, 1);
prepare();
}
public Counter getCounter(){
return counter;
}
private void prepare()
{
bee bee = new bee();
addObject(bee, (getWidth())/2, (getHeight())/2);
ant ant = new ant();
addObject(ant, Greenfoot.getRandomNumber(getWidth()-5), Greenfoot.getRandomNumber(getHeight()-5));
ant ant2 = new ant();
addObject(ant2, Greenfoot.getRandomNumber(getWidth()-5), Greenfoot.getRandomNumber(getHeight()-5));
ant ant3 = new ant();
addObject(ant3, Greenfoot.getRandomNumber(getWidth()-5), Greenfoot.getRandomNumber(getHeight()-5));
addObject(counter, 60, 30);
}
public void addAnt(){
ant ant = new ant();
addObject(ant, Greenfoot.getRandomNumber(getWidth()-5), Greenfoot.getRandomNumber(getHeight()-5));
}
}
import greenfoot.*;
public class bee extends Actor
{
public void act()
{
if(Greenfoot.isKeyDown("right")){
move(5);
}
if(Greenfoot.isKeyDown("left")){
move(-5);
}
if(Greenfoot.isKeyDown("up")){
turn(5);
}
if(Greenfoot.isKeyDown("down")){
turn(-5);
}
Actor ant = getOneIntersectingObject(ant.class);
if(ant != null){
World beeWorld = getWorld();
beeWorld.removeObject(ant);
beeWorld.addObject(ant, Greenfoot.getRandomNumber(beeWorld.getWidth()-5), Greenfoot.getRandomNumber(beeWorld.getHeight()-5));
beeWorld BeeWorld = (beeWorld)beeWorld;
Counter counter = BeeWorld.getCounter();
counter.upScore();
}
}
}
import greenfoot.*;
public class ant extends Actor
{
public void act()
{
move(8);
if(getY() >= (getWorld().getHeight())-5 || getY() <= 5 || getX() >= (getWorld().getWidth())-5 || getX() <= 5){
turn(90+Greenfoot.getRandomNumber(90));
}
}
}
import greenfoot.*;
import java.awt.Color;
public class Counter extends Actor
{
int score = 0;
public void act()
{
setImage(new GreenfootImage("Score: "+ score, 24, Color.RED, Color.WHITE));
}
public void upScore(){
score++;
}
}
import greenfoot.*;
public class fishWorld extends World
{
counter counter = new counter();
public fishWorld()
{
super(600, 400, 1);
prepare();
}
public counter getCounter(){
return counter;
}
private void prepare()
{
fish fish = new fish();
addObject(fish, (getWidth())/2, (getHeight())/2);
mouse mouse = new mouse();
addObject(mouse, Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight()));
addObject(counter, 60, 30);
}
}
import greenfoot.*;
public class fish extends Actor
{
public void act()
{
if(Greenfoot.isKeyDown("right")){
move(5);
}
if(Greenfoot.isKeyDown("left")){
move(-5);
}
if(Greenfoot.isKeyDown("up")){
turn(5);
}
if(Greenfoot.isKeyDown("down")){
move(-5);
}
Actor mouse = getOneIntersectingObject(mouse.class);
if(mouse != null){
World fishWorld = getWorld();
fishWorld.removeObject(mouse);
fishWorld.addObject(mouse, Greenfoot.getRandomNumber(fishWorld.getWidth()), Greenfoot.getRandomNumber(fishWorld.getHeight()));
fishWorld FishWorld = (fishWorld)fishWorld;
counter counter = FishWorld.getCounter();
counter.upScore();
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class mouse extends Actor
{
public void act()
{
move(8);
if(getX() >= (getWorld().getWidth())-5 || getY() >= (getWorld().getWidth())-5 || getX() <= 5 || getY() <= 5){
turn(90+Greenfoot.getRandomNumber(90));
}
}
}
import greenfoot.*;
import java.awt.Color;
public class counter extends Actor
{
int score = 0;
public void act()
{
setImage(new GreenfootImage("Score: "+ 0, 24, Color.RED, Color.WHITE));
}
public void upScore(){
score++;
}
}
