I got some problems with my counters. I know that some where the counters are not set to anything but I can't find it. Can someone help me? The first error i get is with the countCoins counter. I guess the other counters won't work as well. In Bob line 66 i get the first error.
public class Bob extends Characters
{
int speed = 1;
int totalCoins = 20;
int powerBlueEnemy = 4;
int powerGreenEnemy = 11;
int powerPurpleEnemy = 8;
int powerRedEnemy = 8;
private Counter blueEnergy;
private Counter greenEnergy;
private Counter redEnergy;
private Counter purpleEnergy;
private Counter countCoins;
private BobTheSurvivor Level1;
public Bob(Counter blue, Counter green, Counter red, Counter purple, Counter coins){
blueEnergy = blue;
greenEnergy = green;
redEnergy = red;
purpleEnergy = purple;
countCoins = coins;
}
/**
* Act - do whatever the Bob wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
int oldX = getX();
int oldY = getY();
if (Greenfoot.isKeyDown("left")){
setLocation(getX()-speed, getY());
}
if (Greenfoot.isKeyDown("right")){
setLocation(getX()+speed, getY());
}
if (Greenfoot.isKeyDown("up")){
setLocation(getX(), getY()-speed);
}
if (Greenfoot.isKeyDown("down")){
setLocation(getX(), getY()+speed);
}
Actor block = getOneIntersectingObject(Blocks.class);
if (block != null){
setLocation(oldX, oldY);
}
Actor door = getOneIntersectingObject(Door.class);
if(door != null){
setLocation(oldX, oldY);
}
Actor coins = getOneIntersectingObject(Coins.class);
if (coins != null){
countCoins.add(1);//funktioniert noch nicht
getWorld().removeObject(coins);
}
if(countCoins.getValue() >= totalCoins){
getWorld().removeObject(door);
}
Actor trophy = getOneIntersectingObject(Trophy.class);
if (trophy != null){
((BobTheSurvivor)getWorld()).nextLevel();
}
Actor blueDrink = getOneIntersectingObject(BlueDrink.class);
if (blueDrink != null){
blueEnergy.add(1);//funktioniert noch nicht
getWorld().removeObject(blueDrink);
}
Actor greenDrink = getOneIntersectingObject(GreenDrink.class);
if (greenDrink != null){
greenEnergy.add(1);//funktioniert noch nicht
getWorld().removeObject(greenDrink);
}
Actor greenDrinkx5 = getOneIntersectingObject(GreenDrinkx5.class);
if (greenDrinkx5 != null){
greenEnergy.add(5);//funktioniert noch nicht
getWorld().removeObject(greenDrinkx5);
}
Actor purpleDrink = getOneIntersectingObject(PurpleDrink.class);
if (purpleDrink != null){
purpleEnergy.add(1);//funktioniert noch nicht
getWorld().removeObject(purpleDrink);
}
Actor purpleDrinkx4 = getOneIntersectingObject(PurpleDrinkx4.class);
if (purpleDrinkx4 != null){
purpleEnergy.add(4);//funktioniert noch nicht
getWorld().removeObject(purpleDrinkx4);
}
Actor redDrink = getOneIntersectingObject(RedDrink.class);
if (redDrink != null){
redEnergy.add(1);//funktioniert noch nicht
getWorld().removeObject(redDrink);
}
Actor blueEnemy = getOneIntersectingObject(BlueEnemy.class);
if (blueEnemy != null){
if(blueEnergy.getValue() >= powerBlueEnemy){//funktioniert noch nicht
getWorld().removeObject(blueEnemy);
blueEnergy.add(-powerBlueEnemy);
//countBlueEnergy = countBlueEnergy - powerBlueEnemy;
}
else{
die();
}
}
Actor greenEnemy = getOneIntersectingObject(GreenEnemy.class);
if (greenEnemy != null){
if(greenEnergy.getValue() >= powerGreenEnemy){//funktioniert noch nicht
getWorld().removeObject(greenEnemy);
greenEnergy.add(-powerGreenEnemy);
//countGreenEnergy = countGreenEnergy - powerGreenEnemy;
}
else{
die();
}
}
Actor purpleEnemy = getOneIntersectingObject(PurpleEnemy.class);
if (purpleEnemy != null){
if(purpleEnergy.getValue() >= powerPurpleEnemy){//funktioniert noch nicht
getWorld().removeObject(purpleEnemy);
purpleEnergy.add(-powerPurpleEnemy);
//countPurpleEnergy = countPurpleEnergy - powerPurpleEnemy;
}
else{
die();
}
}
Actor redEnemy = getOneIntersectingObject(RedEnemy.class);
if (redEnemy != null){
if(redEnergy.getValue() >= powerRedEnemy){//funktioniert noch nicht
getWorld().removeObject(redEnemy);
redEnergy.add(-powerRedEnemy);
//countRedEnergy = countRedEnergy - powerRedEnemy;
}
else{
die();
}
}
}
public void die(){
((BobTheSurvivor)getWorld()).restartThisLevel();
}
}public class BobTheSurvivor extends World
{
public final int blockSize = 30;
public int level = 1;
private Counter blueEnergyCounter;
private Counter greenEnergyCounter;
private Counter redEnergyCounter;
private Counter purpleEnergyCounter;
private Counter coinsCounter;
/**
* 0 - NoObject
* 1 - Blocks
* 2 - Spawnpoint
* 3 - Trophy
* 4 - Door
* 5 - Coins
* 6 - RedDrink
* 7 - GreenDrink
* 8 - BlueDrink
* 9 - PurpleDrink
* 10 - RedEnemy
* 11 - GreenEnemy
* 12 - BlueEnemy
* 13 - PurpleEnemy
* 14 - PurpleDrinkx4
* 15 - GreenDrinkx5
*/
private int[][] Level1 = {
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, },
{1, 7, 0, 0, 0, 0, 0, 0, 0, 10, 0, 9, 9, 9, 9, 1, 0, 5, 5, 1, },
{1, 7, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 5, 1, },
{1, 7, 0, 0, 8, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, },
{1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 5, 0, 5, 5, 5, 1, 0, 1, 1, 1, },
{1, 0, 7, 1, 8, 1, 0, 0, 0, 1, 5, 14, 5, 1, 1, 1, 0, 1, 5, 1, },
{1, 7, 7, 1, 8, 1, 0, 0, 0, 1, 5, 5, 5, 1, 0, 0, 0, 1, 7, 1, },
{1, 4, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 7, 1, },
{1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 1, 0, 0, 7, 1, },
{1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 11, 1, 1, 1, },
{1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, },
{1, 0, 0, 0, 0, 3, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, },
{1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, },
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 1, 6, 1, },
{1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 5, 1, 0, 0, 1, 1, 1, 6, 1, },
{1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 1, 1, 1, 0, 0, 1, 6, 6, 6, 1, },
{1, 0, 0, 0, 1, 5, 0, 5, 1, 0, 1, 0, 0, 0, 0, 1, 6, 6, 6, 1, },
{1, 0, 0, 0, 1, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, },
{1, 0, 2, 0, 1, 5, 0, 5, 0, 0, 0, 7, 7, 1, 11, 0, 0, 0, 5, 1, },
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, },
};
public BobTheSurvivor()
{
super(20, 20, 30);
generateLevel(level);
//Neu für Counters
blueEnergyCounter = new Counter ("Blue Energy: ");
addObject(blueEnergyCounter, 2, 20);
redEnergyCounter = new Counter ("Red Energy: ");
addObject(redEnergyCounter, 12, 20);
greenEnergyCounter = new Counter ("Green Energy: ");
addObject(greenEnergyCounter, 7, 20);
purpleEnergyCounter = new Counter ("Purple Energy: ");
addObject(purpleEnergyCounter, 17, 20);
coinsCounter = new Counter ("Coins: ");
addObject(coinsCounter, 1, 0);
}
public void nextLevel(){
level++;
changeLevel(level);
generateLevel(level);
}
public void restartThisLevel(){
generateLevel(level);
}
private void generateLevel(int level){
removeObjects(getObjects(null));
for (int i = 0; i < 20; i++){
for (int j = 0; j < 20; j++){
int aNumber = Level1[j][i];
if (aNumber == 1){
addObject (new Blocks(), i, j);
}
else if (aNumber == 2){
addObject (new Bob(blueEnergyCounter, greenEnergyCounter, redEnergyCounter, purpleEnergyCounter, coinsCounter), i, j);
}
