i've been trying to get my counter to work correctly so i could keep track of the points the dolphin gets when it eats a fish in my game but i just can not get it to work. can anyone offer some help?
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.awt.Font; /** * Write a description of class Points here. * * @author (your name) * @version (a version number or a date) */ public class Points extends Actor { private int value = 0; private int target = 0; private int stringLength; private String text; public Points() { this(""); } public Points(String t) { text = t; 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 Dolphin here. * * @author (your name) * @version (a version number or a date) */ public class Dolphin extends Actor { private int urSpeed = 4; private Points counter; public Dolphin(Points pointCounter) { counter = pointCounter; } /** * Act - do whatever the Dolphin wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { moveAround(); eatFish(); } /* * moveAround is just to move up down so * on and so forth. */ public void moveAround() { move(urSpeed); if( Greenfoot.isKeyDown("left")) { turn(-urSpeed); } if(Greenfoot.isKeyDown("right")) { turn(urSpeed); } } public void eatFish() { Actor[] fish = new Actor[5]; //Make all the fish part of an array so i dont have to write if(fish!=null) so many times. //use a for statement to check em all quickly. fish[0] = getOneObjectAtOffset(5,5, BlueFish.class); fish[1] = getOneObjectAtOffset(5,5, GreenFish.class); fish[2] = getOneObjectAtOffset(5,5, OrangeFish.class); fish[3] = getOneObjectAtOffset(5,5, PurpleFish.class); fish[4] = getOneObjectAtOffset(5,5, RedFish.class); for (int i=0; i < fish.length; i++) { if (fish[i] != null) { World world; world = getWorld(); world.removeObject(fish[i]); switch (i) { case 0: counter.add(1); break; case 1: counter.add(2); break; case 2: counter.add(3); break; case 3: //If it is a purple fish it shall make the //dolphin faster. counter.add(10); urSpeed++; break; case 4: counter.add(5); break; default: counter.add(0); break; } } } } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.Random; /** * Write a description of class UnderWater here. * * @author (your name) * @version (a version number or a date) */ public class UnderWater extends World { Points Dpoints = new Points("Points: "); /** * Constructor for objects of class UnderWater. * */ public UnderWater() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(1000, 600, 1); prepare(); } public void act() { int fishNumber; //To hold a value for a random fish number fishNumber = Greenfoot.getRandomNumber(1500); //if statements to find out when to spawn. if ( fishNumber <= 20) addObject(new BlueFish(),Greenfoot.getRandomNumber(getWidth()),Greenfoot.getRandomNumber(getHeight())); else if (fishNumber >= 21 && fishNumber <= 25) addObject(new GreenFish(), Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight())); else if (fishNumber >= 26 && fishNumber <= 29) addObject(new OrangeFish(), Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight())); else if (fishNumber >= 30 && fishNumber <= 33) addObject(new PurpleFish(), Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight())); else if (fishNumber >= 34 && fishNumber <= 36) addObject(new RedFish(), Greenfoot.getRandomNumber(getWidth()), Greenfoot.getRandomNumber(getHeight())); else if (fishNumber == 666) addObject(new Shark(), 235, 368 ); } private void prepare() { addObject(Dpoints, 100, 375); Dolphin d = new Dolphin(Dpoints); addObject(d, getWidth() / 2, getHeight() / 2); } }