更新:私が答える必要があるのは、一番下の質問だけです。
これは特殊なタイプなSpiralBug
ので、インターネットでこのような例を見たことがありません。これSpiralBug
はSpiralBug
コードを使用しますが、余分なものがあり、境界に到達するとそれBoundedGrid
以上前進できなくなり、グリッドの中心で再び再起動する必要があります。これが私の問題の始まりです。これが私のコードで、エラーはありません。
SpiralBugRunner の私のコード
import info.gridworld.actor.ActorWorld;
import info.gridworld.grid.Location;
import java.awt.Color;
public class SpiralBugRunner
{
public static void main( String args[] )
{
ActorWorld world = new ActorWorld( );
SpiralBug bug1 = new SpiralBug(0);
world.add (new Location(4, 4), bug1 );
world.show( );
}
}
そしてSpiralBugの場合
import info.gridworld.actor.Bug;
import info.gridworld.actor.Actor;
import info.gridworld.grid.Location;
public class SpiralBug extends Bug
{
private int sideLength;
private int steps;
public SpiralBug(int n)
{
sideLength = n;
steps = 0;
}
public void act()
{
if (steps < sideLength && canMove())
{
move();
steps++;
}
else
{
turn();
turn();
steps = 0;
sideLength++;
}
}
public void moveTo(Location newLocation)
{
Location loc = new Location(getGrid().getNumCols(), getGrid().getNumRows());
moveTo(loc);
sideLength = 0;
}
}
私の本当の質問は、バグを途中でリセットして、移動できなくなった後に再度実行するように設定するにはどうすればよいですか?