// HorseRace.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 HorseRace extends java.applet.Applet { TextArea disp; // Area to display HT Panel contp; // Panel for user controls Label numl; // Controls TextField num; Button go; GeneralSimulation gs; // Initialize applet public void init() { numl = new Label("No. of races"); // Create controls num = new TextField("30", 4); go = new Button("Go"); contp = new Panel(); // Set up control panel contp.add(numl); contp.add(num); contp.add(go); contp.setLayout(new FlowLayout()); disp = new TextArea(10, 15); // Create display area resize(300,300); // Set up applet setLayout(new FlowLayout()); add(disp); add(contp); validate(); float probs[] = {.3f, .4f, .2f, .1f}; String names[] = {"Acorn", "Balky", "Chestnut", "Dolby"}; gs = new GeneralSimulation(probs, names); } // Handle events public boolean handleEvent(Event evt) { if (evt.target instanceof Button) { if (evt.target == go && evt.id == Event.ACTION_EVENT) // When button is clicked { disp.setText(""); // Reset output window simulate(Integer.valueOf(num.getText()).intValue()); return true; // Generate correct number of tosses } } return super.handleEvent(evt); // Handle other events as usual } // Generate n random coin tosses, and keep track of the number of heads public void simulate(int n) { gs.simulate(n); for (int i = 0; i < 4; i++) { disp.appendText(gs.names[i] + " - " + gs.resultsPercent[i]); disp.appendText("\n"); } } }