mazewalker
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| mazewalker [2019/08/29 23:25] – frchris | mazewalker [2022/09/05 12:25] (current) – [MaveWalker Troubleshooting] frchris | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | Write an instruction '' | + | Write an instruction '' |
| - | {{:: | + | |
| - | Here are four of the different position changes that the robot must be able to make. This instruction is the cornerstone for the program that directs a robot to escape from a maze. It isn't the most efficient algorithm, and it won't work on mazes that have islands (Can you imagine why? | + | ====== Before ====== |
| - | {{ ::mazewalker.java |MazeWalker.java}} | + | {{::turnrightbefore.png|}} |
| - | + | ====== After ====== | |
| - | {{ ::mazewalkertester.java |MazeWalkerTester.java}} | + | {{::turnrightafter.png|}} |
| - | Once the tester shows that the four cases are handled correctly, here is a maze runner class with its own maze: | + | These four different position changes |
| - | {{ :: | ||
| - | <cade java> | + | <code java> |
| import kareltherobot.*; | import kareltherobot.*; | ||
| public class MazeWalker extends Robot | public class MazeWalker extends Robot | ||
| { | { | ||
| - | public MazeWalker(int street, int avenue, Direction direction, int beepers) { | + | public MazeWalker(int street, int avenue, |
| + | Direction direction, int beepers) | ||
| + | { | ||
| super(street, | super(street, | ||
| } | } | ||
| /** | /** | ||
| - | * This algorithm to run a maze. It isn't the fastest method, | + | * This is an algorithm to run a maze. It isn't the fastest method, |
| * and won't work if the maze has any islands (Can you imagine why?) | * and won't work if the maze has any islands (Can you imagine why?) | ||
| * Would it be better to follow the leftWalls? | * Would it be better to follow the leftWalls? | ||
| Line 32: | Line 32: | ||
| /** | /** | ||
| * This will move the Robot according to the diagram | * This will move the Robot according to the diagram | ||
| - | | + | |
| */ | */ | ||
| public void followRightWall() | public void followRightWall() | ||
| Line 46: | Line 46: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | |||
| + | First use the '' | ||
| + | |||
| + | {{ :: | ||
| + | |||
| + | Once the tester shows that the four cases are handled correctly, here is a maze runner class with its own maze: | ||
| + | |||
| + | {{ :: | ||
| + | |||
| + | |||
| + | ===== Running your MazeWaker with Student Mazes ===== | ||
| + | |||
| + | Download the text file you find at [[https:// | ||
| + | <code MazeWalkerRunner.java> | ||
| + | import java.awt.Color; | ||
| + | import kareltherobot.*; | ||
| + | public class MazeWalkerRunner implements Directions | ||
| + | { | ||
| + | public static void task() | ||
| + | { | ||
| + | // change the location to where the first beeper is: | ||
| + | MazeWalker mayzie = new MazeWalker(1, | ||
| + | mayzie.pickBeeper(); | ||
| + | mayzie.escapeMaze(); | ||
| + | mayzie.turnOff(); | ||
| + | } | ||
| + | |||
| + | public static void main(String[] args) | ||
| + | { | ||
| + | World.reset(); | ||
| + | World.setDelay(1); | ||
| + | World.setBeeperColor(Color.RED); | ||
| + | // change the name to match the maze world file | ||
| + | World.readWorld(" | ||
| + | World.setVisible(); | ||
| + | task(); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== MazeWalker Troubleshooting ===== | ||
| + | Hints: | ||
| + | * Case One check: is the front clear? | ||
| + | * Case 2,3,4 you can move | ||
| + | * Case 2 versus case 3,4: is there a wall on the right? | ||
| + | * In case 3 and 4 you can move to the right. | ||
| + | * Case 3 versus case 4: is there a wall on the right? | ||
| + | ====== Links ====== | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
mazewalker.1567135501.txt.gz · Last modified: 2019/08/29 23:25 by frchris