should this replace the entire code then?
public void lookForWorm()
{
if ( canSee(Worm.class))
{
eat(Worm.class);
Greenfoot.playSound("slurp.wav");
wormsEaten++;
if(counter != null) counter.add(1);
if (!getWorld().getObjects(Worm.class).isEmpty()) return;
//Start new round
counter2.add(1);
int numWorms = 0;
if (wormsEaten == 27) numWorms = 30;
else if (wormsEaten <= 288) numWorms = 33;
else if (wormsEaten <= 915) numWorms = 66;
else numWorms = 76;
for (int i=0; i<numWorms; i++) createNewWorm();
int numLobsters = 0;
if (wormsEaten < 90) numLobsters = 4; else numLobsters = 6;
for (int i=0; i<numLobsters; i++) createNewLobster();
}
}Counter counter = new Counter(); Counter counter2 = new Counter(); Counter counter3 = new Counter();
Counter scoreCounter = new Counter(); Counter levelCounter = new Counter(); // etc.
// add a static int field for the timer in the class that the power-up is for
private static int puTimer;
// -------------------
// --- add public static methods ---
// setting the power-up state
public static void startPowerUp()
{
puTimer = 200;
// whatever needs to be done when power-up is started (or re-started)
}
// running the timer
public static void checkPuTimer()
{
if (puTimer > 0) puTimer--;
if (puTimer == 0)
{
// whatever needs done when timer expires
}
}
// getting the power-up state
public static boolean isPoweredUp()
{
return puTimer > 0;
}
// ---------------------
// in the world act method (to run the timers)
ClassName.checkPuTimer();
ClassName2.checkPuTimer();
// etc.
// ----------------------[
// from another class to get/set values (or states)
ClassName.staticMethodName(<params>);import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)
import java.util.ArrayList;
/**
* This class defines a crab. Crabs live on the beach. They like sand worms
* (very yummy, especially the green ones).
*
* Version: 5
*
* In this version, the crab behaves as before, but we add animation of the
* image.
*
*/
public class Crab extends Animal
{
private GreenfootImage image1;
private GreenfootImage image2;
private int wormsEaten;
private int timer1;
private int timer2;
private int timer3;
private int angle;
private Counter scoreCounter;
private Counter levelCounter;
private Counter counter3;
private DominatorPower1 powerUp;
private DominatorPower2 dpPowerUp;
private WormPowerUp wormPowerUp;
public static boolean hasPowerUp;
/**
* Create a crab and initialize its two images.
*/
public Crab()
{
}
public Crab(Counter pointCounter, Counter pointCounter2)
{
scoreCounter = pointCounter;
levelCounter = pointCounter2;
image1 = new GreenfootImage("crab.png");
image2 = new GreenfootImage("crab2.png");
setImage(image1);
}
/**
* Act - do whatever the crab wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
checkKeypress();
switchImage();
lookForWorm();
cheat();
ifCanSeeDP();
addPowerUps();
ifCanSeeWP();
ifCanSeeLP1();
ifCanSeeDP2();
}
public void setPowerUp(DominatorPower1 pu)
{
powerUp = pu;
}
public void setWormPowerUp(WormPowerUp wpu)
{
wormPowerUp = wpu;
}
public void setDPU2(DominatorPower2 dp2)
{
dpPowerUp = dp2;
}
/**
* Alternate the crab's image between image1 and image2.
*/
public void switchImage()
{
if ( getImage() == image1)
{
setImage(image2);
}
else
{
setImage(image1);
}
}
/**
* Check whether a control key on the keyboard has been pressed.
* If it has, react accordingly.
*/
public void checkKeypress()
{
if (Greenfoot.isKeyDown("left"))
{
move(-4);
turn(-5);
}
setRotation(360);
if (Greenfoot.isKeyDown("right"))
{
move(4);
turn(5);
}
setRotation(90);
if (Greenfoot.isKeyDown("up"))
{
move(-4);
}
if (Greenfoot.isKeyDown("down"))
{
move(4);
}
setRotation(0);
}
public void cheat()
{
String key=Greenfoot.getKey() ;
if (key == null) return;
if ("".equals(key) )
{
createNewDominator();
}
}
public void ifCanSeeDP()
{
if (canSee(DominatorPower.class))
{
eat(DominatorPower.class);
getWorld().removeObjects(getWorld().getObjects(DominatorPower1.class));
powerUp = new DominatorPower1();
getWorld().addObject(powerUp, getX(), getY());
timer1 = 500;
}
if (!isPoweredUp()) return;
angle = (angle+5)%360;
powerUp.setLocation(getX(), getY());
powerUp.setRotation(angle);
powerUp.move(40);
powerUp.turn(90);
timer1--;
if (timer1 == 0) getWorld().removeObject(powerUp);
if (timer1 >= 0 ) hasPowerUp=true;
else
{
hasPowerUp = false;
}
}
public boolean isPoweredUp()
{
return (powerUp != null && powerUp.getWorld() != null);
}
public boolean isWormPoweredUp()
{
return (wormPowerUp != null && wormPowerUp.getWorld() != null);
}
public boolean isdp2PoweredUp()
{
return (dpPowerUp != null && dpPowerUp.getWorld() != null);
}
public boolean wormPowerUp()
{
Crab crab = (Crab) getWorld().getObjects(Crab.class).get(0);
turnTowards(crab.getX(), crab.getY());
move(3);
return false;
}
public boolean wormPowered()
{
return timer2 > 0;
}
public boolean dp2Powered()
{
return timer3 > 0 ;
}
public void ifCanSeeLP1()
{
if (canSee(LobsterPowerUp1.class))
{
eat(LobsterPowerUp1.class);
createNewLobster();
}
}
public void ifCanSeeDP2()
{
if (canSee(DominatorPower2.class))
{
eat(DominatorPower2.class);
getWorld().removeObjects(getWorld().getObjects(DominatorPower2.class));
timer3 = 200;
if (!isdp2PoweredUp()) return;
timer3--;
if (timer3 == 0) getWorld().removeObject(dpPowerUp);
}
}
public void ifCanSeeWP()
{
if (canSee(WormPower.class))
{
eat(WormPower.class);
getWorld().removeObjects(getWorld().getObjects(WormPower.class));
wormPowerUp = new WormPowerUp();
getWorld().addObject(wormPowerUp, getX(), getY());
timer2 = 150;
}
if (!isWormPoweredUp()) return;
timer2--;
if (timer2 == 0) getWorld().removeObject(wormPowerUp);
}
public void addPowerUps()
{
if (levelCounter.getValue() >= 1)
{
Greenfoot.getRandomNumber(10000);
if (Greenfoot.getRandomNumber(10000) <= 10)
{
createNewDominatorPower();
}
if (Greenfoot.getRandomNumber(10000) <= 10)
{
createNewDominatorPower2();
}
}
if (levelCounter.getValue() >=2)
{
Greenfoot.getRandomNumber(10000);
if (Greenfoot.getRandomNumber(10000) <= 10)
{
createNewLobsterPower1();
}
}
if (levelCounter.getValue() >= 5)
{
Greenfoot.getRandomNumber(10000);
if (Greenfoot.getRandomNumber(10000) <= 10)
{
createNewWormPower();
}
}
}
/**
* Check whether we have stumbled upon a worm.
* If we have, eat it. If not, do nothing. If we have
* eaten eight worms, we win.
* 0 = Round 1 321 = Round 11 981 = Round 21
* 27 = Round 2 387 = Round 12 1057 = Round 22
* 57 = Round 3 453 = Round 13 1133 = Round 23
* 90 = Round 4 519 = Round 14 1209 = Round 24
* 123 = Round 5 585 = Round 15
* 156 = Round 6 651 = Round 16
* 189 = Round 7 717 = Round 17
* 222 = Round 8 783 = Round 18
* 255 = Round 9 849 = Round 19
* 288 = Round 10 915 = Round 20
*/
public void lookForWorm()
{
if ( canSee(Worm.class))
{
eat(Worm.class);
Greenfoot.playSound("slurp.wav");
wormsEaten++;
if(scoreCounter != null) scoreCounter.add(1);
if (!getWorld().getObjects(Worm.class).isEmpty()) return;
//Start new round
levelCounter.add(1);
int numWorms = 0;
if (wormsEaten == 27) numWorms = 30;
else if (wormsEaten <= 288) numWorms = 33;
else if (wormsEaten <= 915) numWorms = 66;
else numWorms = 76;
for (int i=0; i<numWorms; i++) createNewWorm();
int numLobsters = 0;
if (wormsEaten < 90) numLobsters = 4; else numLobsters = 6;
for (int i=0; i<numLobsters; i++) createNewLobster();
}
}
public void turnAtEdge()
{
if ( atWorldEdge())
{
turn(17);
}
}
public void randomTurn()
{
if (Greenfoot.getRandomNumber(100) < 10)
{
turn( Greenfoot.getRandomNumber(45) );
}
}
public void createNewDominator()
{
Dominator newDominator;
newDominator = new Dominator();
World world;
world = getWorld();
int worldWidth = world.getWidth();
int worldHeight =world.getHeight();
int x = Greenfoot.getRandomNumber(worldWidth);
int y = Greenfoot.getRandomNumber(worldHeight);
world.addObject(newDominator, x, y);
}
public void createNewWorm()
{
Worm worm = new Worm();
World world = getWorld();
int worldWidth = world.getWidth();
int worldHeight =world.getHeight();
int x = Greenfoot.getRandomNumber(worldWidth);
int y = Greenfoot.getRandomNumber(worldHeight);
world.addObject(worm, x, y);
}
public void createNewLobster()
{
Lobster lobster = new Lobster();
World world = getWorld();
int worldWidth = world.getWidth();
int worldHeight =world.getHeight();
int x = Greenfoot.getRandomNumber(worldWidth);
int y = Greenfoot.getRandomNumber(worldHeight);
world.addObject(lobster, x, y);
if ( x == getX() && y ==getY())
{
Crab crab = new Crab();
world.addObject(crab, x, y);
}
}
public void createNewDominatorPower()
{
DominatorPower dp = new DominatorPower();
World world = getWorld();
int worldWidth = world.getWidth();
//int worldHeight =world.getHeight();
int x = Greenfoot.getRandomNumber(worldWidth);
world.addObject(dp, x, 1);
}
public void createNewDominatorPower2()
{
DominatorPower2 dp2 = new DominatorPower2();
World world = getWorld();
int worldWidth = world.getWidth();
//int worldHeight =world.getHeight();
int x = Greenfoot.getRandomNumber(worldWidth);
world.addObject(dp2, x, 1);
}
public void createNewWormPower()
{
WormPower wp = new WormPower();
World world = getWorld();
int worldWidth = world.getWidth();
//int worldHeight =world.getHeight();
int x = Greenfoot.getRandomNumber(worldWidth);
world.addObject(wp, x, 1);
}
public void createNewLobsterPower1()
{
LobsterPowerUp1 lpu1 = new LobsterPowerUp1();
World world = getWorld();
int worldWidth = world.getWidth();
//int worldHeight =world.getHeight();
int x = Greenfoot.getRandomNumber(worldWidth);
world.addObject(lpu1, x, 1);
}
}import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Dominator here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Dominator extends Animal
{
/**
* Act - do whatever the Dominator wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
int lobster = 0;
public boolean lobsterPowerUp;
public void act()
{
move(5);
lookForLobster();
turnAtEdge();
randomTurn();
lobstersEaten();
lobsterPowerUp();
}
public void lobsterPowerUp()
{
Crab crab = (Crab) getWorld().getObjects(Crab.class).get(0);
Lobster lobster = (Lobster) getWorld().getObjects(Lobster.class).get(0);
if (crab != null && crab.dp2Powered())
{
turnTowards(lobster.getX(), lobster.getY());
move(3);
//if (getWorld().getObjects(Lobster.class).isEmpty()) return;
}
}
public void turnAtEdge()
{
if ( atWorldEdge())
{
turn(17);
}
}
public void randomTurn()
{
if (Greenfoot.getRandomNumber(100) < 10)
{
turn( Greenfoot.getRandomNumber(45) );
}
}
public void lobstersEaten()
{
if (canSee(Lobster.class))
{
eat(Lobster.class);
}
if(getWorld().getObjects(Lobster.class).isEmpty())
{
if (canSee(Crab.class))
{
//eat(Crab.class);
}
}
}
/**
* Check whether we have stumbled upon a lobster.
* If we have, eat it. If not, do nothing. If we have
* eaten x lobsters, we win.
*/
public void lookForLobster()
{
if ( canSee(Lobster.class))
{
eat(Lobster.class);
Greenfoot.playSound("slurp.wav");
lobster = lobster + 1;
}
if(getWorld().getObjects(Lobster.class).isEmpty())
{
if (canSee(Crab.class))
{
eat(Crab.class);
}
}
}
}