Bienvenido(a), Visitante. Favor de ingresar o registrarse.

Ingresar con nombre de usuario, contraseña y duración de la sesión

Foros del Club

Páginas: [1]   Ir Abajo
  Enviar tema  |  Imprimir  
Autor Tema: Interfaz Grafica Ahorcado  (Leído 2530 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Malon
Guru
***

Prestigio: 0
Desconectado Desconectado

Mensajes: 3


« en: 21/12/2008, 20:50:57 »

Holas, tengo un gran problema, necesito entregar un trabajo practico URGENTE!, es el juego del Ahorcado con interfaz grafica con AWT, el juego en consola esta funcionando perfectamente, el problema es pasarlo a la ventana, si alguno podria ayudarme con esto o decirme como puedo hacer para visualizar los metodos ya creados en la ventana se los agradeceria muchisimo ya que tengo que entregarlo el martes por la mañana!!
CODIGO AHORCADO:
Código
 
package Ahorcado;
 
 
import java.io.*;
import java.util.*;
 
 
 
 
public class Ahorcado /*extends Frame*/{
 
String palabra = new String(); // Palabra a adivinar.
char letrasAdivinadas[];
String letrasIntroducidas = "";
String[] palabras;
String cadena;
 
public Ahorcado() {
}
 
public String leerArchivo() {
 
List<String> numberList = new ArrayList<String>();
BufferedReader palabra = null;
try
{
palabra = new BufferedReader(new FileReader("palabras.txt"));
String arreglo;
while((arreglo = palabra.readLine()) != null)
numberList.add(arreglo);
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{    
palabra.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
String[] arreglo = new String[(numberList.size())];
numberList.toArray(arreglo);
for (int i =0; i < arreglo.length; i++);
 
Random  r = new Random( new Date().getTime());
String adivinar = arreglo[r.nextInt(arreglo.length)];
 
return adivinar;
 
}
 
public void pedirPalabra() throws IOException {
palabra = leerArchivo();
}
 
public char solicitarLetra(){
try { InputStreamReader reader = new InputStreamReader (System.in);
return (char)reader.read();
} catch (IOException e) {e.printStackTrace();}
return &#39;.&#39;;
};
 
public char pedirLetra() throws IOException {
System.out.println("Introduce una letra:");
String cad = String.valueOf(solicitarLetra());
letrasIntroducidas = letrasIntroducidas + cad.charAt(0) + " ,";
return cad.charAt(0);
}
 
 
public void buscarLetra(char letra) {
int pos = 0;
do {
pos = palabra.indexOf(letra, pos);
if (pos != -1) {
letrasAdivinadas[pos] = letra;
pos++;
}
}
while (pos != -1);
}
 
public void contadorPalabra() {
String cadena = palabra;
    System.out.println("La palabra que hay que advinar tiene " + cadena.length() + " letras");
}
 
public void inicializarPalabra() {
letrasAdivinadas = new char[palabra.length()];
 
for (int i = 0; i <= palabra.length() - 1; i++) {
letrasAdivinadas[i] = &#39;_&#39;;
 
}
 
}
 
public void mostrarJuego() {
for (int i = 0; i <= palabra.length() - 1; i++) {
System.out.print(letrasAdivinadas[i] + " ");
}
System.out.println();
System.out.println("Letras que ya introduciste: " + letrasIntroducidas);
}
 
public int finJuego() {
int res = 0;
for ( int i = 0; i < palabra.length()-1 ; i++) {
if (letrasAdivinadas[i] == &#39;_&#39;) {
res = 1;
}
else {
res = 0;
 
}
}
return res;
}
 
public static void main(String[] args) throws IOException {
/* char c;
 
Ahorcado Jugar = new Ahorcado();
Jugar.pedirPalabra();
Jugar.contadorPalabra();
Jugar.inicializarPalabra();
do {
c = Jugar.pedirLetra();
Jugar.buscarLetra(c);
Jugar.mostrarJuego();
}
while (Jugar.finJuego() == 1);
*/

 
}
 
 
}
 
 
 

CODIGO VENTANA:

Código
package Ahorcado;
 
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.IOException;
import javax.swing.JComponent;  
import javax.swing.JFrame;  
 
 
public class Ventana extends Frame implements ActionListener{
 
java.awt.Button button1;
java.awt.TextField textField1;
java.awt.TextField textField2;
java.awt.Label label1;
Ahorcado ahorcado = new Ahorcado();
 
 
 
/**
*
*/

private static final long serialVersionUID = 1L;
public void init(){
 
setLayout(new FlowLayout(FlowLayout.CENTER,10,5));
setSize(426,200);
 
button1 = new java.awt.Button();
button1.setLabel("Ingresar");
button1.setBackground(new Color(12632256));
add(button1);
textField1 = new java.awt.TextField();
add(textField1);
textField2 = new java.awt.TextField();
add("South", textField2);
 
label1 = new java.awt.Label("Introduzca una letra");
add(label1);
/* MenuBar mb = new MenuBar();
Menu m1 = new Menu("Salir");
mb.add(m1);
setMenuBar(mb);
*/

// MiActionListiner m1 = new MiActionListiner();
 
 
button1.addActionListener(this);
textField1.addActionListener(this);
textField2.addActionListener(this);
//m1.addActionListener(this);
addWindowListener(new EscuchaEventosVentana());
}
 
public static void main(String[] args) throws IOException {
Ventana miVentana = new Ventana();
miVentana.init();
 
miVentana.setVisible(true);
 
 
 
char c;
Ahorcado Jugar = new Ahorcado();
Jugar.pedirPalabra();
Jugar.contadorPalabra();
Jugar.inicializarPalabra();
do {
c = Jugar.pedirLetra();
Jugar.buscarLetra(c);
Jugar.mostrarJuego();
}
 
while (Jugar.finJuego() == 1);
}
 
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Se presiono el boton (desde ventana) ");
//e.getSource()
//ahorcado.leerArchivo();
 
}
 
public class EscuchaEventosVentana implements WindowListener {
//Este evento es cuando se pulsa la X
public void windowClosing(WindowEvent e) {
System.out.println("Solicita cerrar la ventana");
Frame ventana = (Frame)e.getWindow();
ventana.setVisible(false);
ventana.dispose();
}
//Ocurre cuando ya se cerró la ventana
public void windowClosed(WindowEvent e) {
System.out.println("Ventana cerrada; terminar");
System.exit(0);
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
 
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
 
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
 
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
 
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
 
}
 
}
}
 
 
« Última modificación: 21/12/2008, 21:25:35 por CID » En línea
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« Respuesta #1 en: 21/12/2008, 21:31:03 »

Deberias tener una idea de la interfaz que queres hacer.
Para un juego asi quiza lo ideal sería que uses un BorderLayout con un panel en el centro (Center) donde dibujarias con lineas y circulos la figura del ahorcado (Existen temas en este mismo foro que sirven de ejemplo para ello - Gráficos vectoriales).
Y luego una caja de texto donde captures las pulsaciones de teclas y ejecutes el algoritmo de verificación de tu juego (esto en el BorderLayout de abajo - South). Y para completarlo quiza colocar una etiqueta de texto en el BorderLayout de arriba (North).

Más tarde te hago la interfaz, ahora tengo que ir a cocinar Lengua

PD: Bienvenido
En línea

Malon
Guru
***

Prestigio: 0
Desconectado Desconectado

Mensajes: 3


« Respuesta #2 en: 21/12/2008, 21:42:58 »

No necesito los graficos vectoriales para visualizar el "ahorcado" sino que lo que quiero es visualizar los botones para ingresar letra, los textfield para ingresar el char de la letra adivinada y el textfield que me muestre las letras ingresadas, o sea relacionar los metodos con la interfaz porque la verdad que hace dias que estoy y no pude hacerlo.

Te agradezco mucho tu ayuda
En línea
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« Respuesta #3 en: 21/12/2008, 23:48:19 »

Eventos entonces.

Bueno, para ese juego creo que es oportuno usar estos eventos:

Implementar ActionListener para escribir el actionPerformed(ActionEvent arg0)
 (esto es un click sobre un boton asignado con addActionListener).
Implementar KeyListener sobre una caja de dialogo para poder realizar lo correspondiente.

Fijate este ejemplo para guiarte un poco: http://foros.clubdesarrolladores.com/index.php?topic=795.0

Saludos.
En línea

Malon
Guru
***

Prestigio: 0
Desconectado Desconectado

Mensajes: 3


« Respuesta #4 en: 22/12/2008, 22:21:36 »

Gracias por la ayuda, pero no me salio, pase todo el dia desde esta mañana y no hubo caso  No sale...
En línea
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« Respuesta #5 en: 23/12/2008, 00:13:17 »

Te hice un formulario ejemplo para lo que necesitas. Es solo un inicio, vos tenes que terminarlo  Girar ojos



Espero que te sirva, aca va el código:

Código
package ahorcado;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JPanel;
 
/**
*
* @author CID
*/

public class Main extends JFrame implements ActionListener, KeyListener
{
   private JTextField tfIngresadas; //Se usa para esto:  _AT_ (ejemplo PATO)
   private JPanel pnlLienzo; //Para graficar el ahorcado
   private JButton btnStart;//Para iniciar el juego (y un timer si se desea)
   private JTextField tfCapturaLetra; //captura y muestra las letras pulsadas
 
   public Main()
   {
       super("Juego del ahorcado");
       setDefaultCloseOperation(EXIT_ON_CLOSE);
 
       tfIngresadas = new JTextField();
       tfIngresadas.setEnabled(false);
       getContentPane().add(tfIngresadas, BorderLayout.NORTH);
 
       pnlLienzo = new JPanel();
       pnlLienzo.setBackground(Color.WHITE);
       getContentPane().add(pnlLienzo, BorderLayout.CENTER);
 
       btnStart = new JButton("Comenzar");
       btnStart.addActionListener(this);
       pnlLienzo.add(btnStart);
 
       tfCapturaLetra = new JTextField();
       tfCapturaLetra.addKeyListener(this);
       tfCapturaLetra.setEnabled(false);
       getContentPane().add(tfCapturaLetra, BorderLayout.SOUTH);
 
       addKeyListener(this);
       setFocusable(true);
       requestFocus();
       setResizable(false);
       setSize(640, 480);
       setLocationRelativeTo(null);
       setVisible(true);
   }
 
   public static void main(String[] args) {
       new Main();
   }
 
   public void actionPerformed(ActionEvent e) {
       btnStart.setVisible(false);
       tfIngresadas.setEnabled(true);
       tfCapturaLetra.setEnabled(true);
   }
 
   public void keyTyped(KeyEvent e) {
       //La tecla que el usuario presiono: e.getKeyChar()
       //Aca va el codigo para verificar y actualizar los otros componentes
       System.out.println(e.getKeyChar());
   }
 
   public void keyPressed(KeyEvent e) {
       //No se usa para este ejemplo
   }
 
   public void keyReleased(KeyEvent e) {
       //No se usa para este ejemplo
   }
 
}
 

Saludos.
En línea

Foros del Club
   

 En línea
Páginas: [1]   Ir Arriba
  Enviar tema  |  Imprimir  
 
Ir a: