mazewalker
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
mazewalker [2019/08/29 23:19] – frchris | mazewalker [2022/09/05 12:22] – [Running your MazeWaker with Student Mazes] frchris | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | Write an instruction '' | + | Write an instruction '' |
- | {{::maze_moves.png|}} | + | |
+ | ====== Before ====== | ||
+ | |||
+ | {{::turnrightbefore.png|}} | ||
+ | ====== After ====== | ||
+ | {{:: | ||
+ | |||
+ | These four different position changes is the cornerstone for the algorithm that directs a robot to escape from a maze simply by following the right wall. It isn't the most efficient algorithm, and it won't work on mazes that have islands (Can you imagine why? | ||
- | Here are four of the different position changes that the robot must be able to make. This instruction is the cornerstone for a program that directs a robot to escape from a maze (for homework later) | ||
- | {{ :: | ||
- | |||
- | ====== MazeWalkerRunner.java ====== | ||
<code java> | <code java> | ||
- | import java.awt.Color; | ||
import kareltherobot.*; | import kareltherobot.*; | ||
- | public class MazeWalkerRunner implements Directions | + | public class MazeWalker extends Robot |
{ | { | ||
- | public | + | |
- | { | + | public |
- | MazeWalker mayzie = new MazeWalker(1,1,East,0); | + | |
- | mayzie.escapeMaze(); | + | |
- | mayzie.turnOff(); | + | super(street, avenue, direction, beepers); |
+ | |||
} | } | ||
- | public | + | /** |
+ | * 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?) | ||
+ | * Would it be better to follow the leftWalls? | ||
+ | */ | ||
+ | public void escapeMaze() { | ||
+ | while (! nextToABeeper() ) | ||
+ | followRightWall(); | ||
+ | } | ||
+ | /** | ||
+ | * This will move the Robot according to the diagram | ||
+ | * above. | ||
+ | */ | ||
+ | public void followRightWall() | ||
{ | { | ||
- | World.reset(); | + | |
- | World.setVisible(); | + | |
- | World.setDelay(10); | + | |
- | World.setBeeperColor(Color.RED); | + | |
- | String maze = " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | World.getWorld(maze); | + | |
- | task(); | + | |
} | } | ||
+ | |||
+ | public void turnRight() { | ||
+ | for (int i=0; i<3; i++) | ||
+ | turnLeft(); | ||
+ | } | ||
+ | |||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
+ | 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(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== MaveWalker 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.txt · Last modified: 2022/09/05 12:25 by frchris