Hello
I am doing the Greeps. My professor told me that the greeps should catch at least 15 tomatoes in 15 seconds in each map. I do not know where my source code should be changed. Those are my greep class' source code.
import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)
/**
* A Greep is an alien creature that likes to collect tomatoes.
*
* @Alisa Johnston
* @version 0.1
*/
public class Greep extends Creature
{
// Remember: you cannot extend the Greep's memory. So:
// no additional fields (other than final fields) allowed in this class!
/**
* Default constructor for testing purposes.
*/
public Greep()
{
this(null);
}
/**
* Create a Greep with its home space ship.
*/
public Greep(Ship ship)
{
super(ship);
}
/**
* Do what a greep's gotta do.
*/
public void act()
{
super.act(); // do not delete! leave as first statement in act().
TomatoPile tomatoes = (TomatoPile) getOneIntersectingObject(TomatoPile.class);
Greep overlapping = (Greep) getOneIntersectingObject(Greep.class);
if (atWorldEdge()) {
turn(Greenfoot.getRandomNumber(90));
}
if (carryingTomato()) {
spit("purple");
if(atShip()) {
dropTomato();
turn(180);
move();
setMemory(0);
}
else {
if (atWater()) {
turn(Greenfoot.getRandomNumber(150));
move();
}
else {
turnHome();
move();
}
}
}
else {
if (atWater()) {
turn(Greenfoot.getRandomNumber(150));
}
if (tomatoes != null) {
if (getMemory() < 9) {
setMemory(getMemory() + 1);
}
if (getMemory() < 8) {
move();
}
}
else {
if (seePaint("purple") && !carryingTomato() && tomatoes == null && !atWorldEdge() && !atWater()) {
turnHome();
turn(180);
spit("orange");
}
else if (!seePaint("purple") && !seePaint("orange")) {
if (randomChance(30) == true) {
if (randomChance(50) == true) {
turn(0);
}
else {
turn(-10);
}
}
if (!atWater())
{
spit("red");
}
}
else if (seePaint("red") && !seePaint("purple") && !seePaint("orange")) {
if (randomChance(50) == true) {
turn(90);
}
else {
turn(-90);
}
}
move(100);
}
checkFood();
}
if (tomatoes == null) {
setMemory(0);
}
}
/**
* Is there any food here where we are? If so, try to load some!
*/
public void checkFood()
{
// check whether there's a tomato pile here
TomatoPile tomatoes = (TomatoPile) getOneIntersectingObject(TomatoPile.class);
if(tomatoes != null) {
loadTomato();
// Note: this attempts to load a tomato onto *another* Greep. It won't
// do anything if we are alone here.
}
}
/**
* This method specifies the name of the author (for display on the result board).
*/
public static String getAuthorName()
{
return "Alisa Johnston"; // write your name here!
}
/**
* This method specifies the image we want displayed at any time. (No need
* to change this for the competition.)
*/
public String getCurrentImage()
{
if(carryingTomato())
return "greep-with-food.png";
else
return "greep.png";
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)
/**
* A Greep is an alien creature that likes to collect tomatoes.
*
* @Alisa Johnston
* @version 0.1
*/
public class Greep extends Creature
{
// Remember: you cannot extend the Greep's memory. So:
// no additional fields (other than final fields) allowed in this class!
/**
* Default constructor for testing purposes.
*/
public Greep()
{
this(null);
}
/**
* Create a Greep with its home space ship.
*/
public Greep(Ship ship)
{
super(ship);
}
/**
* Do what a greep's gotta do.
*/
public void act()
{
super.act(); // do not delete! leave as first statement in act().
TomatoPile tomatoes = (TomatoPile) getOneIntersectingObject(TomatoPile.class);
Greep overlapping = (Greep) getOneIntersectingObject(Greep.class);
if (atWorldEdge()) {
turn(Greenfoot.getRandomNumber(90));
}
if (carryingTomato()) {
spit("purple");
if(atShip()) {
dropTomato();
turn(180);
move();
setMemory(0);
}
else {
if (atWater()) {
turn(Greenfoot.getRandomNumber(150));
move();
}
else {
turnHome();
move();
}
}
}
else {
if (atWater()) {
turn(Greenfoot.getRandomNumber(150));
}
if (tomatoes != null) {
if (getMemory() < 9) {
setMemory(getMemory() + 1);
}
if (getMemory() < 8) {
move();
}
}
else {
if (seePaint("purple") && !carryingTomato() && tomatoes == null && !atWorldEdge() && !atWater()) {
turnHome();
turn(180);
spit("orange");
}
else if (!seePaint("purple") && !seePaint("orange")) {
if (randomChance(30) == true) {
if (randomChance(50) == true) {
turn(0);
}
else {
turn(-10);
}
}
if (!atWater())
{
spit("red");
}
}
else if (seePaint("red") && !seePaint("purple") && !seePaint("orange")) {
if (randomChance(50) == true) {
turn(90);
}
else {
turn(-90);
}
}
move(100);
}
checkFood();
}
if (tomatoes == null) {
setMemory(0);
}
}
/**
* Is there any food here where we are? If so, try to load some!
*/
public void checkFood()
{
// check whether there's a tomato pile here
TomatoPile tomatoes = (TomatoPile) getOneIntersectingObject(TomatoPile.class);
if(tomatoes != null) {
loadTomato();
// Note: this attempts to load a tomato onto *another* Greep. It won't
// do anything if we are alone here.
}
}
/**
* This method specifies the name of the author (for display on the result board).
*/
public static String getAuthorName()
{
return "Alisa Johnston"; // write your name here!
}
/**
* This method specifies the image we want displayed at any time. (No need
* to change this for the competition.)
*/
public String getCurrentImage()
{
if(carryingTomato())
return "greep-with-food.png";
else
return "greep.png";
}
}