import java.awt.*; import java.util.*; public class RandomWalk { // DrawingPanel will have dimensions DIM by DIM public static final int DIM = 400; // Start the random walk in the center of the screen public static final int CENTER = DIM / 2; // how big should the cursor appear? public static final int CURSOR_DIM = 10; // how long should the cursor saty in one place? public static final int SLEEP_TIME = 25; // milliseconds public static void main( String[] args ) { DrawingPanel panel = new DrawingPanel( DIM, DIM ); Random rand = new Random(); walkRandomly( panel, rand ); } /** * Draw a random walk on the panel. * Stop as soon as you walk off the panel. * Each random step should go only in one * of these directions: left, right, up, down. * @param panel a DrawingPanel to draw the * random walk on * @param rand a Java Random object to be * used to generate random steps */ public static void walkRandomly( DrawingPanel panel, Random rand ) { Graphics g = panel.getGraphics(); // start in center of panel int x = CENTER; int y = CENTER; // Randomly step left, right, up, or down // until cursor goes off screen. while ( onScreen( x, y ) ) { // Draw the cursor in BLACK g.fillRect(x, y, CURSOR_DIM, CURSOR_DIM); // Wait a bit. panel.sleep( SLEEP_TIME ); // Show a shadow version of the cursor g.setColor(Color.GRAY); g.fillRect(x, y, CURSOR_DIM, CURSOR_DIM); // YOUR CODE GOES BETWEEN THE STARS // Choose a new location for the cursor //********************************* // create a new random object Random move = new Random(); // chose the next direction based on randomly // chosing an integer between 0 and 3 int xmove = move.nextInt(3) - 1; int ymove = 0; if (xmove == 0) { ymove = (move.nextInt(2) * 2) - 1; } x += CURSOR_DIM * xmove; y += CURSOR_DIM * ymove; //********************************* // END OF YOUR CODE // draw the cursor at its new location g.setColor(Color.BLACK); g.fillRect(x, y, CURSOR_DIM, CURSOR_DIM); } } /** * determine whether (x, y) is a point on the panel. * @param x the x-coord of the cursor * @param y the y-coord of the cursor * @return true if (x,y) is on the screen, * false if (x,y) is off the screen */ public static boolean onScreen( int x, int y ) { // YOUR CODE GOES BETWEEN THE STARS // Replace "return true" with code // that returns true if (x,y) is still // on the screen and returns false if // (x,y) is no longer on the screen. //********************************* return ((x >= 0 && x <= DIM) && (y >= 0 && y <= DIM)); //********************************* // END OF YOUR CODE } }