/*******************************************************************************
Author:           Rebecca Hasti, hasti@cs.wisc.edu
                  copyright 2000, all rights reserved
Course:           CS 302

Compiler:         Metrowerks CodeWarrior (JDK 1.2)
Platform:         Windows (NT 4.0 or 95 or 2000)
*******************************************************************************/

/**
 * Represents a magic 8 ball which can answer yes-or-no questions.
 *
 * Bugs:	none known
 **/
class Magic8Ball {

	////////////////////////////////////////
	// Data Members
	////////////////////////////////////////
	
	private Die chooser;
	
	////////////////////////////////////////
	// Constructors
	////////////////////////////////////////
	
	public Magic8Ball() {
		chooser = new Die(20);
	}
	
	////////////////////////////////////////
	// Public Methods
	////////////////////////////////////////
	
	/** 
	 * Asks the magic 8 ball the given yes-or-no question.
	 * Note: assumes the String passed in is in the form of a yes-or-no question.
	 * @param s the question
	 **/
	public void askQuestion(String s) {
		chooser.rollDie();
	}
	
	/**
	 * Gives an answer.
	 * @return an answer to a yes-or-no question
	 **/
	public String giveAnswer() {
		int value = chooser.getValue();
		String answer = translateValue(value);
		return answer;
	}

	////////////////////////////////////////
	// Private Methods
	////////////////////////////////////////
	
	/** 
	 * Translates the given integer value into a String answer.
	 * Note: assumes the integer is between 1 and 20 (inclusive).
	 * @param n the answer in the form of an integer value
	 * @return the answer in the form of a String
	 **/
	private String translateValue(int n) {
		String answer;
		    switch (n) {
      			case 1:     answer = "Outlook Good";
      			            break;
      					
      			case 2:     answer = "Outlook Not So Good";
      			            break;
     
      			case 3:     answer = "My Reply Is No";
      			            break;
     	
      			case 4:     answer = "Don't Count On It";
      			            break;
     
      			case 5:     answer = "You May Rely On It";
      			            break;
     
      			case 6:     answer = "Ask Again Later";
      			            break;
     
      			case 7:     answer = "Most Likely";
      			            break;
     
      			case 8:     answer = "Cannot Predict Now";
      			            break;
     
      			case 9:     answer = "Yes";
      			            break;
     
      			case 10:    answer = "Yes Definately";
      			            break;
     
      			case 11:    answer = "Better Not Tell You Now";
      			            break;
     
      			case 12:    answer = "It Is Certain";
      			            break;
     
      			case 13:    answer = "Very Doubtful";
      			            break;
     
      			case 14:    answer = "It Is Decidedly So";
      			            break;

      			case 15:    answer = "Concentrate and Ask Again";
      			            break;
     
      			case 16:    answer = "Signs Point to Yes";
      			            break;
     
      			case 17:    answer = "My Sources Say No";
      			            break;
     
      			case 18:    answer = "Without a Doubt";
      			            break;
     
      			case 19:    answer = "Reply Hazy, Try Again";
      			            break;
     
      			case 20:    answer = "As I See It, Yes";
      			            break;
     
      			default:    answer = "**** ERROR ****";
		} // end switch
		
		return answer;
	} // end method translateValue
} // end class Magic8Ball
