package aula5;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Jogo da Adivinhação
 * @author Caetano Spuldaro Neto
 * @since 14/04/2007
 */
public class Jogo1 {
	
	/**
	 * Método de entrada do aplicativo
	 * @param args - array de parâmetros (se existirem)
	 */
	public static void main(String args[]) {
		
		// Nova instância do objeto do tipo Jogo1
		Jogo1 jogo = new Jogo1();
		
		System.out.println("Estou pensando um numero entre 1 e 10");
		System.out.println("Tente adivinhar!!!");
		
		// "Pensa" o valor a ser adivinhado pelo usuário
		int valorPensado = (int)Math.round(Math.random()*10*0.5);
		
		int chute = -1;
		int chutes = 0;
		do {
			chutes++;
			// Lê a tentativa do usuário
			chute = jogo.lerTeclado();
			// Qualifica a mesma, enquanto ele não acertar, contando os chutes
			if (Math.abs(valorPensado - chute) >= 3) {
				System.out.println("FRIO!");
			} else if (Math.abs(valorPensado - chute) == 2) {
				System.out.println("MORNO!");
			} else if (Math.abs(valorPensado - chute) == 1) {
				System.out.println("QUENTE!");
			}
		} while (chute != valorPensado);
		
		// Ao acertar, encerra-se o loop, e informa-seo o usuário
		// O programa termina normalmente
		System.out.println("Acertou em "+ chutes +" chutes! Fim!!!");
		
	}
	
	/**
	 * Método responsável pela leitura do teclado
	 * @return int - número digitado
	 */
	public int lerTeclado() {
		BufferedReader br = 
			new BufferedReader(
					new InputStreamReader(System.in));
		System.out.print("Seu chute:");
		String texto = null;
		int chute = -1;
		try {
			// lê uma linha digitada e tenta converter!
			texto = br.readLine();
			chute = Integer.parseInt(texto);
		} catch (IOException ioe) {
			// Se erro de IO, abandonamos o programa.
			System.out.println("Erro de IO!");
			System.exit(1);
		} catch (NumberFormatException nfe) {
			System.out.println("Número inválido! Tente novamente!!!");
			// Caso falhe na conversão, usamos de recursividade
			// para tentar novamente:
			return this.lerTeclado();
		}
		return chute;
	}

}

