// BuffonsNeedle.java // Written by Julian Devlin, 8/97, for the text book // "Introduction to Probability," by Charles M. Grinstead & J. Laurie Snell import java.applet.Applet; import java.awt.*; public class BuffonsNeedle extends java.applet.Applet { NeedleArea na; // AWT elements Label message; Button go; TextField num; Label results; Panel graphArea; Panel controls; // Set up all controls and put them in the window public void init() { message = new Label("No. of needles ="); // Create controls go = new Button("Simulate"); num = new TextField(4); results = new Label("Estimate of pi is "); graphArea = new Panel(); // Set up window controls = new Panel(); setLayout(new BorderLayout()); controls.setLayout(new FlowLayout()); controls.add(message); controls.add(num); controls.add(go); controls.add(results); na = new NeedleArea(0); // initialize display add("Center", na); add("South", controls); } // Does the simulation, creating two arrays to store game states, then passes them // to a SpikeGraph public void simulate() { int nn = 0; float area; try { nn = Integer.parseInt(num.getText().trim()); // Get user input } catch (Exception e) { num.setText(""); validate(); } remove(na); na = new NeedleArea(nn); // Create new needle area add("Center", na); // Put up the graph validate(); float est = na.setPoints(); results.setText("Estimate of pi is " + String.valueOf(est)); validate(); } // Watch for a click on the go button public boolean action(Event evt, Object arg) { if (evt.target instanceof Button) { if ((String)arg == "Simulate") { simulate(); } } return true; } public Insets insets() { return new Insets(15,15,15,15); } }