Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package controlador;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import juego.*;
- import juego.Tablero.Direccion;
- import vista.*;
- /**
- * Clase que relaciona los diferentes elementos de la GUI con la lógica del juego
- * que se encuentra en la clase 'Tablero' del paquete 'modelo'
- *
- * @author Dibez, Santana
- *
- */
- public class ManejadorJuego {
- Tablero tablero;
- PanelTablero panelTablero;
- VentanaPrincipal ventanaPrincipal;
- /**
- * Constructor único de la clase.
- * Crea y muestra la ventana principal con el tablero de juego.
- */
- public ManejadorJuego() {
- this.tablero = new Tablero();
- this.panelTablero = new PanelTablero(tablero.getCantFilas(), tablero.getCantColumnas());
- for (int fila = 0; fila < tablero.getCantFilas(); fila++) {
- for (int columna = 0; columna < tablero.getCantColumnas(); columna++) {
- String casilla = tablero.getCasilla(fila, columna).toString();
- panelTablero.setBoton(fila, columna, new JButton(casilla));
- panelTablero.add(panelTablero.getBoton(fila, columna));
- panelTablero.getBoton(fila, columna).addActionListener(new BotonListener());
- }
- }
- panelTablero.resetearColores();
- //seteamos visibilidad
- panelTablero.setVisible(true);
- this.ventanaPrincipal = new VentanaPrincipal(panelTablero);
- this.ventanaPrincipal.setVisible(true);
- }
- /**
- * Invocado cuando se presiona una casilla.
- * Verifica si la casilla contiene una moneda o no.
- * Si la casilla contiene una moneda colorea las direcciones de salto
- * posibles y pregunta por la dirección en que se desea saltar.
- *
- * @author Dibez, Santana
- *
- */
- private class BotonListener implements ActionListener, ObservadorPregunta {
- @Override
- public void actionPerformed(ActionEvent e) {
- JButton casilla;
- int fila, columna;
- boolean respuesta = true;
- panelTablero.resetearColores();
- casilla = ((JButton) e.getSource());
- fila = panelTablero.getFila(casilla);
- columna = panelTablero.getColumna(casilla);
- if(tablero.esMoneda(fila, columna))
- {
- if (tablero.getCantSaltos() % 3 == 0) {
- //obj que contiene en un array con todas las preguntas disponibles
- HistoricoPreguntas preguntaRandom = new HistoricoPreguntas();
- //se añade al panel pregunta un pregunta elegida aleatoriamente
- ManejadorPregunta manejadorPregunta = new ManejadorPregunta(preguntaRandom.sortearPregunta());
- //ventanaPrincipal.add(manejadorPregunta.getVentanaPregunta());
- }
- if (colorearDireccionesSalto(casilla) && respuesta) {
- String direccion = preguntarDireccion();
- if(direccion != "") {
- saltar(fila, columna, direccion);
- }
- panelTablero.resetearColores();
- verificarFinJuego();
- }
- }
- casilla.setSelected(false);
- }
- @Override
- public void Correcto() {
- }
- @Override
- public void Incorrecto() {
- }
- }
- /**
- * Colorea las casillas en que la moneda seleccionada puede saltar
- * @param casilla - el botón correspondiente a la moneda seleccionada
- * @return true si la moneda tiene saltos posibles, false si no los tiene
- */
- private boolean colorearDireccionesSalto(JButton casilla) {
- int fila = panelTablero.getFila(casilla);
- int columna = panelTablero.getColumna(casilla);
- boolean tieneSaltos = false;
- if (tablero.puedeSaltar(fila, columna, Direccion.Arriba)) {
- panelTablero.colorearBoton(fila - 2, columna, Color.GREEN);
- tieneSaltos = true;
- }
- if (tablero.puedeSaltar(fila, columna, Direccion.Abajo)) {
- panelTablero.colorearBoton(fila + 2, columna, Color.GREEN);
- tieneSaltos = true;
- }
- if (tablero.puedeSaltar(fila, columna, Direccion.Izquierda)) {
- panelTablero.colorearBoton(fila, columna - 2, Color.GREEN);
- tieneSaltos = true;
- }
- if (tablero.puedeSaltar(fila, columna, Direccion.Derecha)) {
- panelTablero.colorearBoton(fila, columna + 2, Color.GREEN);
- tieneSaltos = true;
- }
- return tieneSaltos;
- }
- private String preguntarDireccion() {
- IngresoDireccion panelDireccion = new IngresoDireccion(panelTablero.getParent());
- ventanaPrincipal.add(panelDireccion);
- panelDireccion.setVisible(true);
- ventanaPrincipal.remove(panelDireccion);
- return panelDireccion.getDireccion();
- }
- /**
- * Llama al método saltar de 'tablero'
- * y modifica las casillas de la IGU en consecuencia
- *
- * @param fila - Fila de la moneda que realizará el salto
- * @param columna - Columna de la moneda que realizará el salto
- * @param direccion - Dirección en la que saltará la moneda
- */
- private void saltar(int fila, int columna, String direccion) {
- tablero.saltar(fila, columna, direccion);
- for (int i = 0; i < panelTablero.getCantFilas(); i++) {
- for (int j = 0; j < panelTablero.getCantColumnas(); j++) {
- String casilla = tablero.getCasilla(i, j).toString();
- (panelTablero.getBoton(i, j)).setText(casilla);
- }
- }
- }
- /*
- private boolean hacerPregunta() {
- Pregunta pregunta = new Pregunta();
- PanelPregunta panelPregunta = new PanelPregunta(pregunta.getPregunta(),
- pregunta.getOpcion1().toString(),
- pregunta.getOpcion2().toString(),
- pregunta.getOpcion3().toString());
- ventanaPrincipal.add(panelPregunta);
- panelPregunta.setVisible(true);
- return true;
- }*/
- /**
- * Testea si el jugador ha ganado o perdido el juego y
- * muestra un mensaje en consecuencia.
- */
- private void verificarFinJuego() {
- if (tablero.victoria()) {
- JOptionPane.showMessageDialog(ventanaPrincipal, "Ha ganado el juego");
- } else if (tablero.derrota()) {
- JOptionPane.showMessageDialog(ventanaPrincipal, "Ha perdido el juego");
- }
- }
- /**
- * Inicia el juego
- */
- public static void main(String[] args) {
- new ManejadorJuego();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement