//RandomWalk.java import java.awt.*; import javax.swing.*; public class RandomWalk extends JApplet { int lines; public void init() { String input; input = JOptionPane.showInputDialog("Enter # of steps to take"); lines = Integer.parseInt(input); } public void paint( Graphics g ) { super.paint( g ); int xPrev, yPrev, xNow, yNow; int xCenter=getWidth()/2; int yCenter=getHeight()/2; double totalDist=0, avgDist=0, dist; int scale=5; //conversion to screen pixels xPrev = xNow = xCenter; //start in center yPrev = yNow = yCenter; g.setColor(Color.RED); g.fillRect(xPrev-3,yPrev-3,5,5); g.setColor(Color.BLACK); for (int i=1; i<=lines; i++) { switch ((int)(Math.random()*4)) { case 0: //up yNow = yPrev - scale; break; case 1: //down yNow = yPrev + scale; break; case 2: //left xNow = xPrev - scale; break; case 3: //left xNow = xPrev + scale; break; } //draw line in red to see it as the leading edge. not visible... //g.setColor(Color.RED); //g.drawLine(xPrev,yPrev,xNow,yNow); //redraw the line in black //g.setColor(Color.BLACK); g.drawLine(xPrev,yPrev,xNow,yNow); xPrev = xNow; yPrev = yNow; int x = (xNow - xCenter) / scale; int y = (yNow - yCenter) / scale; dist = Math.sqrt(x*x+y*y); totalDist += dist; avgDist = totalDist / i; showStatus("Distance from origin: " + (int)dist + " Average distance: " + (int)avgDist); } } } /*change scale for zoom add ending point as blue rectangle input scale factor from user add Thread.sleep input sleep value from user */