I'm trying to make a a "GrowingFlower" that just adds flowers to random locations. The amount of Flowers that are added is based off of a random number. When I run the Flower after I hit act 6 times it dies like its supposed to but it never adds any flowers so I need your help solving this please. Thank You in advance.
Here is the code for the "GrowingFlower"
package projects.flowers;
import info.gridworld.actor.ActorWorld;
import info.gridworld.actor.Flower;
public class GrowingFlower extends Flower {
private int Growing = (int) (Math.random() * 4);
private int age = 0;
ActorWorld world = new ActorWorld();
public void act(){
Growing = (int) (Math.random() * 4);
age++;
if (age == 1){
switch(Growing){
case 0:
removeSelfFromGrid();
case 1:
world.add(new GrowingFlower());
case 2:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
case 3:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
case 4:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
}
}
else if (age == 2){
switch(Growing){
case 0:
removeSelfFromGrid();
case 1:
world.add(new GrowingFlower());
case 2:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
case 3:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
case 4:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
}
} else if(age == 3) {
switch(Growing) {
case 0:
removeSelfFromGrid();
case 1:
world.add(new GrowingFlower());
case 2:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
case 3:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
case 4:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
}
} else if (age == 4){
switch(Growing) {
case 0:
removeSelfFromGrid();
case 1:
world.add(new GrowingFlower());
case 2:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
case 3:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
case 4:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
}
} else if (age == 5){
switch(Growing) {
case 0:
removeSelfFromGrid();
case 1:
world.add(new GrowingFlower());
case 2:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
case 3:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
case 4:
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
world.add(new GrowingFlower());
}
} else if (age == 6){
removeSelfFromGrid();
}
}
}
And Here is my runner
package projects.firstProject;
import projects.flowers.GrowingFlower;
import info.gridworld.actor.ActorWorld;
public class FlowerRunner
{
public static void main(String[] args)
{
ActorWorld world = new ActorWorld();
world.add(new GrowingFlower());
world.show();
}
}
I'm not so familiar with this "GridWorld" framework, so this might not be an acceptable answer, but too long for a comment, and ... may be helpful nevertheless:
I think that the problem is that you are creating a new world in your
GrowingFlower
instances:Later, in the
act
method, you are adding newGrowingFlower
instances to this world, but not to the world that you created (and showed!) in themain
method.So the solution might be to change the code as follows:
1. Change the constructor of your
GrowingFlower
class to accept the "world" where the new flowers should be added:2. Pass in the world from the main method to your first
GrowingFlower
:Apart from that, you should refactor your
act
method a bit:(As far as I see, this should still have the same behavior)