InterfazTriqui /**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * $Id$ * Universidad de los Andes (Bogotá - Colombia) * Departamento de Ingeniería de Sistemas y Computación * Licenciado bajo el esquema Academic Free License version 2.1 * * Proyecto Cupi2 * Ejercicio: Triqui * Autor inicial: Katalina Marcos * Modificación: Jorge Jiménez- Junio 2005 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ package uniandes.cupi2.triqui.interfaz; import import java.awt.BorderLayout; java.awt.Dimension; import import import javax.swing.JButton; javax.swing.JFrame; javax.swing.JOptionPane; import import uniandes.cupi2.triqui.mundo.JugadorPC; uniandes.cupi2.triqui.mundo.Triqui; /** public class { * Interfaz gráfica del juego del triqui */ InterfazTriqui extends JFrame // ----------------------------------------------------------------// Constantes // ----------------------------------------------------------------/** * Marca para el jugador humano */ private final static String MARCA_JUGADOR = "X" ; /** * Marca para el jugador PC */ private final static String MARCA_PC = ; // ----------------------------------------------------------------// Atributos de Interfaz // ----------------------------------------------------------------/** "O" 1/6 InterfazTriqui * Panel triqui */ private PanelTriqui triquiPanel; /** * Panel botones */ private PanelBotones botonesPanel; /** * Panel barra de mensajes */ private PanelMensajes mensajesPanel; // ----------------------------------------------------------------// Atributos // ----------------------------------------------------------------/** * Juego de triqui */ private Triqui juegoTriqui; /** * Jugador PC */ private // ----------------------------------------------------------------// Constructores // ----------------------------------------------------------------- /** * Construye la interfaz del triqui * @param */ public InterfazTriqui { // Tablero del Triqui triquiPanel = new // Botones botonesPanel = new // Mensajes mensajesPanel = new setPreferredSize add JugadorPC jugadorPC; ( ( titulo Nombre que tendrá el Fram ( String ti PanelTriqui ( PanelBotones ( PanelMensajes ( ) new Dimens mensajesPanel, BorderLayout.N ) 2/6 InterfazTriqui add ( add ( setTitle ( pack ( ) setResizable ( setDefaultCloseOperation ( triquiPanel, BorderLayout.CENT ) botonesPanel, BorderLayout.SO ) titulo ) ; false ) JFrame.EXIT_ON_CLOSE ) mensajesPanel.desplegarMensaje ( "Listo para jugar!" ) // Juego Triqui juegoTriqui = new // Jugador PC del Triqui jugadorPC = new Triqui ( ) JugadorPC ( } // ----------------------------------------------------------------// Métodos // ----------------------------------------------------------------- /** * Prepara para iniciar otro juego */ public void { // Limpia el tablero del triqui juegoTriqui.limpiarTablero ( ) JButton botonReiniciar; // Prepara la interfaz del tablero del triqui for ( { botonReiniciar = ( botonReiniciar.setEnabled ( botonReiniciar.setText ( } } /** * Procesa la jugada del humano. Si es válido invita a jugar al PC * @param casillaJugada Jugada por el hum */ public void procesaJugada ( { nuevoJuego ( ) ; int i = JButton true "" ) ) ) 3/6 InterfazTriqui int // Obtiene el número de casilla casilla = Integer.valueOf( // Indica al juego del triqui la casilla señalada por el humano juegoTriqui.marcarCasilla ( casilla, MARCA_JUGADOR ) // Verifica si el humano ganó el juego if ( { mensajesPanel.desplegarMensaje ( JButton botonReiniciar; // Al ganar se apaga el tablero for ( { botonReiniciar = ( botonReiniciar.setEnabled ( } } else // Si no ganó el humano invita a jugar al PC { mensajesPanel.desplegarMensaje ( // si el PC pudo realizar una jugada if ( { // Verifica si ganó el jugador PC if ( { mensajesPanel.desplegarMensaje ( JButton botonReiniciar; // Al ganar se apaga el tablero for ( { botonReiniciar = ( botonReiniciar.setEnabled ( } } else // si no ganó el PC cede el turno mensajesPanel.desplegarMensaje ( } casilla; casillaJugada ) juegoTriqui.ganoJuego ( "Ganaste!" ) int i = JButton false ) ) "Mi turno!" ) jugadorPC.jugar ( ) ) juegoTriqui.ganoJuego ( "Gané!" ) int i = JButton false ) ) "Tu turno" ) 4/6 InterfazTriqui else { // Si el jugador PC no pudo realizar la jugada es porque el // juego ha terminado mensajesPanel.desplegarMensaje ( "Se acabó el juego..." ) } } } /** * Pinta el tablero para reflejar las jugadas hechas */ public void repintarTriqui { String marca; JButton botonReiniciar; for ( int i = { botonReiniciar = ( JButton ) // La marca de cada casilla no vacía la toma del juego if ( !juegoTriqui.casillaVacia( { marca = juegoTriqui.obtenerMarcaCasilla ( i ) botonReiniciar.setText ( marca ) botonReiniciar.setEnabled ( false ) } } } // ----------------------------------------------------------------// Puntos de Extensión // ----------------------------------------------------------------- /** * Ejecuta la operación 1.<br> * <b> */ public void { String respuesta = juegoTriqui.metodo1 ( ) JOptionPane.showMessageDialog ( } ( ) post: </b> reqFuncOpcion1 ( ) ; this, respuesta, "Respue 5/6 InterfazTriqui /** * Ejecuta la operación 2.<br> * <b> */ public void { String respuesta = juegoTriqui.metodo2 ( ) JOptionPane.showMessageDialog ( } } /** * Método principal de ejecución * @param */ public static void { InterfazTriqui gui = new gui.setVisible ( } post: </b> reqFuncOpcion2 ( ) ; this, respuesta, "Respue args Argumentos de entrada pa main ( InterfazTriqui true ( ) 6/6