Hello,
There is an issue with the counter on this game. Here are my classes:
Level Two Class
CarEnemy Class
Car Class
Counter Class
Characters Class
The error is 'cannot find symbol - variable counter' in the Level 2 Class
Thanks in advance
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Level2 here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Level2 extends World
{
public Level2()
{
super(800, 600, 1);
prepare();
}
public void prepare() {
Counter counter = new Counter ();
addObject(counter, 58, 26);
counter.setLocation(35, 35);
Car car = new Car();
addObject (car, 400, 525);
}
public void act() {
if(Greenfoot.getRandomNumber(100) < 2) //this will make trucks randomley apear.
{
addObject(new CarEnemy(counter), Greenfoot.getRandomNumber(455) + 195, 0); //this keeps trucks on the road
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class cars here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class CarEnemy extends Characters
{
/**
* Act - do whatever the cars wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
driveDown();
endOfRoad();
}
private Counter counter;
public CarEnemy(Counter pointCounter) {
counter = pointCounter;
}
public void driveDown()
{
setLocation(getX(), getY() + 5);
}
public void endOfRoad()
{
if (canSee(Car.class))
{
collectItem(Car.class);
Greenfoot.setWorld(new Level2GameOver ());
}
if(getY() >= getWorld().getHeight() -1)
{
getWorld().removeObject(this);
counter.add(1);
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Car here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Car extends Characters
{
/**
* Act - do whatever the Car wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
checkKeys();
}
public void moveLeft()
{
if(getX() > 195)
{
setLocation(getX() - 4, getY());
}
}
public void moveRight()
{
if(getX() < 650)
{
setLocation(getX() + 4, getY());
}
}
public void checkKeys()
{
if (Greenfoot.isKeyDown("left"))
{
moveLeft();
}
if(Greenfoot.isKeyDown("right"))
{
moveRight();
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Counter here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Counter extends Actor
{
private static final Color transparent = new Color(0,0,0,0);
private GreenfootImage background;
private int value;
private int target;
public Counter()
{
background = getImage(); // get image from class
value = 0;
target = 0;
updateImage();
}
public void act()
{
if (value < target) {
value++;
updateImage();
}
else if (value > target) {
value--;
updateImage();
}
}
public void add(int score)
{
target += score;
}
public int getValue()
{
return value;
}
public void setValue(int newValue)
{
target = newValue;
value = newValue;
updateImage();
}
private void updateImage()
{
GreenfootImage image = new GreenfootImage(background);
GreenfootImage text = new GreenfootImage("" + value, 22, Color.YELLOW, transparent);
image.drawImage(text, (image.getWidth()-text.getWidth())/2,
(image.getHeight()-text.getHeight())/2);
setImage(image);
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Character here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Characters extends Actor
{
public boolean atWorldEdge()
{
if(getX() < 10 || getX() > getWorld().getWidth() - 10)
return true;
if(getY() < 10 || getY() > getWorld().getHeight() - 10)
return true;
else
return false;
}
public boolean canSee(Class clss)
{
Actor actor = getOneObjectAtOffset(0, 0, clss);
return actor != null;
}
public boolean collectItem(Class cls) {
if (getOneIntersectingObject(cls) == null)
return false;
getWorld().removeObject(getOneIntersectingObject(cls));
return true;
}
}
