예제 #1
0
 private int buscarPosicion(Trebejo treb, Partida part) {
   int i = 0;
   for (Trebejo t : part.getFichas()) {
     if (t.getPosX() == treb.getPosX() && t.getPosY() == treb.getPosY()) {
       i = part.getFichas().indexOf(t);
     }
   }
   return i;
 }
예제 #2
0
  /** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    String dniBlancas = request.getParameter("dniBlancas");
    String dniNegras = request.getParameter("dniNegras");

    VOLogin voBlancas = new VOLogin();
    VOLogin voNegras = new VOLogin();

    voBlancas.setDNI(Integer.parseInt(dniBlancas));
    voNegras.setDNI(Integer.parseInt(dniNegras));

    HttpSession session = request.getSession(true);

    session.setAttribute("dniBlancasLogueado", voBlancas);
    session.setAttribute("dniNegrasLogueado", voNegras);

    FuncionesServlet servletFunciones = new FuncionesServlet();
    servletFunciones.setearAtributoPosiciones(request, response);

    Partida pEncontrada =
        ctrl.buscarPartida(Integer.parseInt(dniBlancas), Integer.parseInt(dniNegras));

    // validacion usada en welcome.jsp linea 94
    if (pEncontrada != null) {
      session.setAttribute("nroPartida", pEncontrada.getId());
      session.setAttribute("turno", "");

    } else {
      session.setAttribute("nroPartida", null);
      session.setAttribute("turno", "");
    }
    // fin validacion

    request.getRequestDispatcher("welcome.jsp").forward(request, response);
  }
예제 #3
0
  public void moverPieza(Posicion posOrigen, Posicion posDestino) throws ApplicationException {
    Pieza pieza = partida.getColPiezas().get(posOrigen);
    try {
      if (pieza.getColor().equals(partida.getTurno())) {
        if (pieza.movimientoValido(posDestino)) {
          Pieza piezaObjetivo = partida.getColPiezas().get(posDestino);
          if (piezaObjetivo != null) {
            if (!piezaObjetivo.getColor().equals(partida.getTurno())) {
              partida.getColPiezas().remove(posDestino);
              // Usamos la posicion z0 para eliminar una pieza sin borrar el registro en la tabla
              Posicion posEliminado = new Posicion('z', 0);
              dp.moverPieza(piezaObjetivo, partida, posEliminado);
            } else {
              throw new ApplicationException(
                  "La posición de destino contiene una pieza del mismo jugador que está efectuando el movimiento",
                  null);
            }
          }
          dp.moverPieza(pieza, partida, posDestino);
          pieza.setPosicion(posDestino);
          partida.getColPiezas().remove(posOrigen);
          partida.getColPiezas().put(posDestino, pieza);
          Jugador jugadorActual = null;
          if (partida.getTurno().equals("blanco")) {
            partida.setTurno("negro");
            jugadorActual = partida.getJugadorBlancas();
          } else {
            partida.setTurno("blanco");
            jugadorActual = partida.getJugadorNegras();
          }
          dp.actualizarTurno(partida.getIdPartida(), partida.getTurno());
          if (piezaObjetivo != null && piezaObjetivo.getTipoPieza().equals("R")) {

            throw new EndGameException(
                "Felicidades "
                    + jugadorActual.getNombre()
                    + " "
                    + jugadorActual.getApellido()
                    + " ha ganado la partida!!!",
                null);
          }
        } else {
          throw new ApplicationException("El movimiento introducido no es válido", null);
        }
      } else {
        throw new ApplicationException(
            "La pieza seleccionada para mover no corresponde al jugador del turno", null);
      }
    } catch (NullPointerException e) {
      throw new ApplicationException(
          "No se encontro pieza en la posicion ingresada como destino", e);
    }
  }
예제 #4
0
 public int mover(int finalPosX, int finalPosY, Trebejo treb, Partida part) {
   boolean encontroTrebejo = false;
   for (Trebejo t : part.getFichas()) {
     if (t.getPosX() == finalPosX && t.getPosY() == finalPosY) {
       encontroTrebejo = true;
       if (treb.movimientoPermitido(finalPosX, finalPosY, true)) {
         if (t.getColor() == treb.getColor()) {
           // No puedo mover
           return 1;
         }
         // Como
         else {
           part.getFichas().remove(t);
           ct.borrarTrebejos(t);
           ct.actualizarTrebejos(finalPosX, finalPosY, treb);
           int pos = this.buscarPosicion(treb, part);
           part.getFichas().get(pos).setPosX(finalPosX);
           part.getFichas().get(pos).setPosY(finalPosY);
           if (t.getTipo() == 'K') {
             cp.eliminarPartida(part);
             return 5;
           }
           // Cambio el turno
           part.setTurno(!part.getTurno());
           cp.actualizarPartida(
               part.getBlanco().getDni(), part.getNegro().getDni(), part.getTurno());
           return 2;
         }
       }
       // Si el movimiento no es permitido
       else return 4;
     }
   }
   ;
   if (!encontroTrebejo) {
     if (treb.movimientoPermitido(finalPosX, finalPosY, false)) {
       int pos = this.buscarPosicion(treb, part);
       ct.actualizarTrebejos(finalPosX, finalPosY, treb);
       treb.setPosX(finalPosX);
       treb.setPosY(finalPosY);
       part.getFichas().set(pos, treb);
       part.setTurno(!part.getTurno());
       cp.actualizarPartida(part.getBlanco().getDni(), part.getNegro().getDni(), part.getTurno());
       return 3;
     } else return 4;
   } else return 0;
 }