/* CSCI 15A- 5 Assignment 3
 * 
 * Game of Cootie
 *
 * Author: Alex Chan October 21, 1998
 */

import java.awt.*;
import java.applet.*;
import java.awt.event.*;


public class Cootie extends Applet implements ActionListener {
	
	private final int NUM_EYES = 2, NUM_ANTENNAE = 2, NUM_LEGS = 6;
	private boolean Body, Head, Tail, Eyes, Antennae, Legs;
	private int Dice, NumEye, NumAntennae, NumLeg, randomcolor1, randomcolor2, randomcolor3;
	
	Button DiceRoll;
	TextField Tdice = new TextField(5);
		
	public void init() {
		Body = false;
		Head = false;
		Tail = false;
		Eyes = false;
		Antennae = false;
		Legs = false;

		NumLeg = 0;
		NumEye = 0;
		NumAntennae = 0;
	
		DiceRoll = new Button("Dice Roll");
		add(DiceRoll);
		add(Tdice);
		DiceRoll.addActionListener(this);	
	}
	
	public void actionPerformed (ActionEvent e){
		if (!completeCootie()) {
			Dice = (int) (6 * Math.random() + 1);
			Tdice.setText(Dice + " ");
	
	        Graphics g = getGraphics();
			randomcolor1 = (int) (255 * Math.random() + 1);
			randomcolor2 = (int) (255 * Math.random() + 1);
			randomcolor3 = (int) (255 * Math.random() + 1);	  		
			g.setColor(new Color(randomcolor1, randomcolor2, randomcolor3));
	
			switch (Dice) {
			  case 1: if (!Body)
			               drawBody(g);
		    	           break;
			  case 2: if (Body && !Head)
			  			   drawHead(g);
			  			   break;
			  case 3: if (Body && !Legs)
			  			   NumLeg++;
			  			   drawLeg(NumLeg, g);
			  			   break;
			  case 4: if (Head && !Antennae)
			    		   NumAntennae++;
			    		   drawAntennae(NumAntennae, g);
			    		   break;
			  case 5: if (Head && !Eyes)
			  		 	   NumEye++;
			  		 	   drawEye(NumEye, g);
			  		 	   break;
			  case 6: if (Body && !Tail)
			  			   drawTail(g);
			  			   break;
	  		}
	  	}	   
	}

	private boolean completeCootie(){
		return (Body && Head && Tail && Eyes && Antennae && Legs);
	}
	
	private void drawBody(Graphics g) { 
		g.fillOval(50, 250, 150, 75);
		Body = true;
		}  
	
	private void drawHead(Graphics g) {
		g.fillOval(200, 260, 50, 50);
		Head = true;
		}

  	private void drawTail(Graphics g) {
  		g.drawLine(10, 290, 50, 290);
  		Tail = true;
  		}

  	private void drawLeg(int NumLeg, Graphics g) {
  		//NumLeg++;
  		switch (NumLeg) {
  			case 1: g.drawLine(230, 200, 180, 260);
  					break;
  			case 2: g.drawLine(130, 200, 130, 250);
  					break;
  			case 3: g.drawLine(30, 200, 80, 260);
  					break;
  			case 4: g.drawLine(80, 315, 30, 375);
  					break;
  			case 5: g.drawLine(130, 325, 130, 375);
  					break;
  			case 6: g.drawLine(180, 315, 230, 375);
  					break;
  			}
  		if (NumLeg == NUM_LEGS) 
  			Legs = true;
  	}

  	private void drawAntennae(int NumAntennae, Graphics g) { 
  		//NumAntennae++;
  		if (NumAntennae == 1) g.drawLine(280, 250, 250, 280);
  			else g.drawLine(280, 300, 250, 280);
  		if (NumAntennae == NUM_ANTENNAE) 
  			Antennae = true;
   	}

  	private void drawEye(int NumEye, Graphics g) {
  		//NumEye++;
  		if (NumEye == 1) g.fillOval(240, 275, 5, 5);
  			else g.fillOval(240, 285, 5, 5);
		if (NumEye == NUM_EYES) 
			Eyes = true;
	}

}
