// 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");
    	}
	}

}


