I just added a score counter to my game, finally got it working and now when I run the game my characters can't seem to move, none of them, they just freeze in place. As I'm not sure what code you guys need to see what's wrong I'll give you the codes of the World, Counter & Characters.
World Code:
Counter code:
Character code:
If you could help me I'd really appreciate it.
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class crumpled here. * * @author (your name) * @version (a version number or a date) */ public class crumpled extends World { /** * Constructor for objects of class crumpled. * */ public crumpled() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(600, 400, 1); prepare(); Greenfoot.setSpeed(50); } public void act() { if (Greenfoot.isKeyDown("enter")) { Greenfoot.setWorld(new crumpled()); } } /** * Prepare the world for the start of the program. That is: create the initial * objects and add them to the world. */ private void prepare() { Zombie zombie = new Zombie(); addObject(zombie, 61, 211); BrainCounter braincounter = new BrainCounter(zombie); addObject(braincounter, 84, 33); enemy enemy = new enemy(); addObject(enemy, 494, 105); enemy enemy2 = new enemy(); addObject(enemy2, 442, 197); enemy enemy3 = new enemy(); addObject(enemy3, 346, 337); enemy enemy4 = new enemy(); addObject(enemy4, 349, 336); enemy enemy5 = new enemy(); addObject(enemy5, 36, 125); enemy enemy6 = new enemy(); addObject(enemy6, 249, 155); enemy enemy7 = new enemy(); addObject(enemy7, 344, 115); enemy enemy8 = new enemy(); addObject(enemy8, 361, 141); enemy4.setLocation(409, 331); removeObject(enemy4); brain brain = new brain(); addObject(brain, 511, 303); brain brain2 = new brain(); addObject(brain2, 418, 286); brain brain3 = new brain(); addObject(brain3, 280, 110); brain brain4 = new brain(); addObject(brain4, 423, 78); } }
import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot) import java.awt.Color; public class BrainCounter extends Actor { private static final Color TEXT_COLOR = new Color(200, 0, 0); private static final Color TRANSPARENT_COLOR = new Color(0, 0, 0, 0); private Zombie zombie; public BrainCounter(Zombie zombie) { this.zombie = zombie; updateImage(); } public void act() { updateImage(); if (zombie.getScore() == 0) { Greenfoot.setWorld(new crumpled()); } } private void updateImage() { String text = "Brains eaten: " + zombie.getScore(); GreenfootImage image = new GreenfootImage(text, 20, TEXT_COLOR, TRANSPARENT_COLOR); setImage(image); } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class awesome here. * * @author (your name) * @version (a version number or a date) */ public class Zombie extends Animal { public int brainsNibbled=0; /** * Act - do whatever the awesome wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { moveAndTurn(); brainsNibbled(); getScore(); } public void moveAndTurn() { if (Greenfoot.isKeyDown("left")) { turn(-4); } if (Greenfoot.isKeyDown("right")) { turn(4); } if (Greenfoot.isKeyDown("up")) { move(4); } if (Greenfoot.isKeyDown("down")) { move(-4); } } public void brainsNibbled() { Actor brain; brain = getOneObjectAtOffset(0, 0, brain.class); if (canSee (brain.class) ) { brainsNibbled++; World world; world = getWorld(); world.removeObject(brain); getWorld().addObject(new brain(), Greenfoot.getRandomNumber(getWorld().getWidth()), Greenfoot.getRandomNumber(getWorld().getHeight())); } } public int getScore() { return brainsNibbled; } }