i'm trying to make a bug multiply when it hits a rock or another bug or a side the bug will remove itself from the grid and add 2 bugs to a empty location. It "steps" but does not "run"
here is my code:
import info.gridworld.grid.Location; import info.gridworld.grid.Grid; import java.util.Random; import info.gridworld.actor.Bug; import info.gridworld.actor.Actor; import info.gridworld.actor.ActorWorld; import info.gridworld.world.World; import java.util.ArrayList; import java.lang.Object;
public class MultiplyingBug extends Bug {
private int steps ; private int sideLength; public MultiplyingBug(int length) { steps = 0; sideLength = length; } /** * Moves to the next location of the diagnol. */ public void act() { if (steps < sideLength && canMove()) { move(); steps++; } else { turn(); turn(); steps = 0; } Grid<Actor> gr = getGrid(); if (gr == null) { return; } //Use RandomGenerator to determine where to put the bug on the grid Random randomGenerator = new Random(); for ( int idx = 0; idx <= 9; idx++) { randomGenerator.nextInt(); randomGenerator.nextInt(); //when a bug cannot move , creates a new bug in new location if (canMove() == false) { Location old = getLocation(); removeSelfFromGrid(); MultiplyingBug NewBug= new MultiplyingBug(100); Location another = new Location (randomGenerator.nextInt(10), randomGenerator.nextInt(10)); NewBug.putSelfInGrid(gr, another); MultiplyingBug NewBug2= new MultiplyingBug(100); Location another2 = new Location (randomGenerator.nextInt(10), randomGenerator.nextInt(10)); NewBug2.putSelfInGrid(gr, another2); } }
} }
and Here is my error...:
(it runs at first but when the bug hits a side, the error occurs and i exit the error but run does not work anymore)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: This actor is not contained in a grid. at info.gridworld.actor.Actor.removeSelfFromGrid(Actor.java:136) at MultiplyingBug.act(MultiplyingBug.java:90) at info.gridworld.actor.ActorWorld.step(ActorWorld.java:68) at info.gridworld.gui.GUIController.step(GUIController.java:134) at info.gridworld.gui.GUIController$2.actionPerformed(GUIController.java:109) at javax.swing.Timer.fireActionPerformed(Timer.java:271) at javax.swing.Timer$DoPostEvent.run(Timer.java:201) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
thank you...PLEASE HELP ME!!
ignore the comment " move to the next location of diagonal...
Ads