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; }
/** @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); }
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); } }
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; }