/*

Hangman game by:
Jose Heriberto Lopez Ruiz - 542765

You can use this code if you want, 
but I would like to know it was helpful 
for you :)

write to:

jose122088@gmail.com

*/



import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;

public class Ahorcado extends Applet implements ActionListener
{
	
	String [ ] palabras = { "BYTE","TERABYTE","CONCENTRACION","GUADALAJARA","ASTABANDERA","MUNECO","MENTALIDAD","GARABATO","CRIPTOLOGIA","ACEPTACION"};
	Button btn1,btn2;
	TextField letra;
	TextArea palabra, probadas;
	Label lbl1,lbl2,lbl3,lbl4,titulo;
	Panel panel0,panel1,panel2,panel3;
	
	public int vidas;
	public int num;
	public String x;
	public int chars;
	public char z;
	public String fg;
	public boolean quitaVidas;

	
	public void init()
	{
		
	setLayout(new GridLayout(5,1));
	
	panel0 = new Panel();
	panel0.setLayout(new GridLayout(1,2,15,15) );
	
	panel1 = new Panel();
	panel1.setLayout(new GridLayout(1,2) );
	
	panel2 = new Panel();
	panel2.setLayout(new GridLayout(1,3) );
	
	panel3 = new Panel();
	panel3.setLayout(new GridLayout(1,2) );
	
		
	vidas = 5;
	
	lbl1= new Label("Palabra: ");
	lbl2= new Label("Letra: ");
	lbl3= new Label("Letras probadas: ");
	lbl4= new Label("Te quedan "+vidas+" vidas");
	titulo= new Label("Juego del Ahorcado - By Jose Lopez");
	
	btn1 = new Button("Probar");
	btn2= new Button("Juego nuevo");
    letra = new TextField();
	
	palabra = new TextArea();
	probadas = new TextArea();
	
	
	panel0.add(titulo);
	panel0.add(lbl4);
	panel1.add(lbl1);
	panel1.add(palabra);		
	panel2.add(lbl2);
	panel2.add(letra);
	panel2.add(btn1);
	panel3.add(lbl3);
	panel3.add(probadas);
	

	add(panel0);
	add(panel1);
	add(panel2);
	add(panel3);
	add(btn2);
	
	lbl4.setFont(new Font("Arial", Font.PLAIN, 16));

	btn1.addActionListener(this);
	btn2.addActionListener(this);
	
	
	//Aqui empieza lo bueno...
	///////////////////////////////////////////////////
	
		//Asigna una palabra aleatoriamente
	
	palabra.setText("");
	
	num = (int) (Math.random()*(9));
	
	x = palabras[num];
	
	chars = x.length();
	
	for(int i = 0; i < chars ;i++){
		palabra.append("_");
	}
	
	//Termina de asignar la palabra aleatoriamente
	
	////////////////////////////
	}//Fin del init
	
	public void actionPerformed(ActionEvent e)
	{
		
		if (e.getSource()==btn1){
				
	
	z = (letra.getText().toUpperCase()).charAt(0);
	
	char xa[] = new char[1];
	xa[0]=z;
	
	String zz = new String(xa);


	probadas.append(zz.toUpperCase()+" ");
	
	String actual = palabra.getText();
	
	palabra.setText("");
	
	quitaVidas = true;
	
	for(int i=0;i<chars;i++){
		

	if( z == x.charAt(i) ){
		palabra.append(zz.toUpperCase());
		quitaVidas = false;
	
		
	}else{
		
		//Lo unico que hago aqui es transformar un char a string
		//Solo que tengo que pasarlo primero por un arreglo
		//porque no existe cast de char a string
		//pero si existe un metodo constructor de string con un arreglo de chars
		
		 char qq = actual.charAt(i);
		 char qqa[] = new char[1];
		 qqa[0]=qq;
		 String qqax = new String(qqa);
		 
		 //Fin de la transformacion de char a String
		
		palabra.append(qqax);

	}//Fin del else
	}//Fin del for
	
	actual = palabra.getText(); //Variable que se actualiza la palabra que está presente
	

	//determina si te quita una vida o no
	
	if(quitaVidas == true){
		vidas = vidas - 1;
		
		if(vidas<=0){
			
			lbl4.setText("ˇAHORCADO! - GAME OVER");
			letra.setText("");
			probadas.setText("");
			palabra.setText(x);
			
		}else{
			lbl4.setText("Te quedan "+vidas+" vidas");
		}
		
	}
	
	//Fin del que determina si te quita vidas o no

	
		if(actual.equals(x)){
	lbl4.setText("YOU WIN!");
	}
	
		}//Fin de btn1
				
		if (e.getSource()==btn2){
			
			vidas = 5;
			lbl4.setText("Te quedan "+vidas+" vidas");
			probadas.setText("");
			letra.setText("");
			
		//Asigna una palabra aleatoriamente
	
	palabra.setText("");
	
	num = (int) (Math.random()*(9));
	
	x = palabras[num];
	
	chars = x.length();
	
	for(int i = 0; i < chars ;i++){
		palabra.append("_");
	}
	
	//Termina de asignar la palabra aleatoriamente
	
		}//Fin de btn2
		
	}//Fin del action performed

}//Clase principal