Esempio n. 1
0
  /** Create the application. */
  public FrameJuego(String ip, int puerto, String nombre) throws Exception {

    servidor = new Socket(ip, puerto);
    initialize();

    entrada = new ObjectInputStream(servidor.getInputStream());
    threadComunicacion.start();

    Thread.sleep(100);

    for (Jugador j : juego.getJugadores()) {
      if (nombre.equals(j.getNombre())) {
        JOptionPane.showMessageDialog(null, "Ya hay un jugador con ese nombre");
        frmDrawPum.dispose();
        return;
      }
    }

    salida = new PrintWriter(servidor.getOutputStream());

    salida.println("0" + "&" + nombre + "&" + nombre);
    salida.flush();

    jugador = nombre;

    frmDrawPum.setVisible(true);
  }
Esempio n. 2
0
  public void jugar() {

    this.enEjecución = true;

    Jugador jugadorActual;

    // Iniciamos el iterador
    Iterator<Jugador> itrJug = ListaJugadores.getListaJugadores().getIterador();

    // Mientras no haya finalizado ningun jugador, seguimos
    while (ListaJugadores.getListaJugadores().algunoHaTerminado() == false) {

      // Mientras turno sea true, sera el turno del jugador actual
      // Al cambiar a false, el turno pasara al siguiente
      Boolean turno = true;

      // Si estabamos en el ultimo reiniciamos el iterador
      // para volver al primero
      if (!itrJug.hasNext()) {
        itrJug = ListaJugadores.getListaJugadores().getIterador();
      }

      // Cogemos un jugador
      jugadorActual = itrJug.next();

      // Si el jugador estuviese retenido en alguna casilla, no entraria en el while,
      // por lo que pasaria el turno al siguiente jugador.
      // Si el jugador esta en la ultima casilla, tampoco entraría en el while, ya que
      // tiene un tratamiento distinto.
      while (jugadorActual.getRetencion() == 0
          && turno == true
          && jugadorActual.getPosicion() != 63) {

        // Tiramos el dado
        int tirada = Dado.getDado().getTirada();
        Visualizacion.getVisualizacion().visualizarTirada(jugadorActual.getNombre(), tirada);

        // Avanzamos hasta la casilla que nos corresponda
        jugadorActual.avanzar(tirada);
        Visualizacion.getVisualizacion().visualizarAvance(jugadorActual);

        // Obtenemos la posicion en la que se encuentra el jugador
        int posicion = jugadorActual.getPosicion();

        // Obtenemos el tipo de casilla en la que se encuentra
        int tipoCasilla = ListaCasillas.getListaCasillas().getTipoCasilla(posicion);

        switch (tipoCasilla) {

            // Casilla de pregunta
          case 1:
            turno = this.ejecutarCasillaNormal(turno);
            break;

            // Casilla de retencion
          case 2:
            turno = this.ejecutarCasillaRetencion(turno, jugadorActual, posicion);
            break;

            // Casilla de traslado
          case 3:
            this.ejecutarCasillaTraslado(turno, jugadorActual, posicion);
            break;
        }
      }

      if (turno && jugadorActual.getRetencion() != 0 && jugadorActual.getPosicion() != 63) {
        jugadorActual.actualizarRet();
        Visualizacion.getVisualizacion().visualizarRetencionPendiente(jugadorActual);
        turno = false;
      }

      // Al llegar a la ultima casilla se le hace al jugador una pregunta
      // de cada tema. Si falla alguna, pasa el turno al siguiente jugador.
      // Si en 3 turnos no acierta todas, vuelve a empezar
      if (jugadorActual.getPosicion() == 63) {
        if (jugadorActual.getRetencion() < 3) {
          jugadorActual.actualizarRet();
        }

        if (jugadorActual.getRetencion() != 0) {

          // Hacer preguntas, una de cada tipo
          // Si falla alguna nos salimos
          Boolean fallo = false;
          int cont = 0;
          int aciertos = 0;
          while (fallo == false && aciertos < 5) {

            Carta unaCarta = Listas.getMisListas().buscarCartaTema(cont);

            while (unaCarta == null) {
              unaCarta = Listas.getMisListas().buscarCartaTema(cont);
              if (unaCarta == null) {
                Listas.getMisListas().reiniciarListas();
              }
            }

            // Visualizar carta
            // Recoger respuesta
            Boolean resp =
                Visualizacion.getVisualizacion().visualizarCartayRecogerRespuesta(unaCarta);

            if (resp) {

              // Si acierta -> acierto+1
              aciertos++;
            } else {

              // Si falla -> fallo = true
              fallo = true;
            }

            cont++;
          }

          if (!fallo) {
            jugadorActual.ganar();
            Visualizacion.getVisualizacion().visualizarHaGanado(jugadorActual);
            this.enEjecución = false;
          }

        } else {

          // El jugador vuelve a empezar
          jugadorActual.moverACasilla(1);
        }
      }
    }
  }