private static int incializaPartida() { try { return ca.inicializaPartida(); } catch (ApplicationException ae) { JOptionPane.showMessageDialog(null, ae.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); } return 0; }
private void actualizarComidas() { ArrayList<Pieza> comidas = new ArrayList<Pieza>(); if (lado) { // Ya se cambió el lado comidas = ca.getComidasBlancas(); } else { comidas = ca.getComidasNegras(); } if (!comidas.isEmpty()) { StringBuffer comida = new StringBuffer(); for (int i = 0; i < comidas.size(); i++) { comida.append(comidas.get(i).getSimbolo()); } if (lado) { txtBlancasComidas.setText(comida.toString()); } else { txtNegrasComidas.setText(comida.toString()); } } }
private static void inicializarTablero() { char[][] posicion = ca.inicializarTablero(); StringBuilder nombre = new StringBuilder(); Color color = Color.WHITE; for (char i = 'A'; i < 'I'; i++) { for (int j = 1; j < 9; j++) { nombre.delete(0, 2); nombre.append("" + i + j); if ((j == 1) || (j == 2)) { color = Color.WHITE; } if ((j == 7) || (j == 8)) { color = Color.BLACK; } botones.get(nombre.toString()).setForeground(color); botones .get(nombre.toString()) .setText(Character.toString(posicion[j - 1][Character.getNumericValue(i) - 10])); } } }
private static void continuarTablero() { Pieza[][] piezas = ca.getPiezas(); StringBuilder posicion = new StringBuilder(); for (char i = 'A'; i < 'I'; i++) { for (int j = 1; j < 9; j++) { posicion.append("" + i + j); if (piezas[j - 1][Character.getNumericValue(i) - 10] != null) { botones .get(posicion.toString()) .setText( Character.toString( piezas[j - 1][Character.getNumericValue(i) - 10].getSimbolo())); if (piezas[j - 1][Character.getNumericValue(i) - 10].getLado()) { botones.get(posicion.toString()).setForeground(Color.WHITE); } else { botones.get(posicion.toString()).setForeground(Color.BLACK); } } else { botones.get(posicion.toString()).setText(Character.toString('\u0000')); } posicion.delete(0, 2); } } }
private char promocion() { char alfil, torre, caballo, reina; if (lado) { alfil = '\u2657'; torre = '\u2656'; caballo = '\u2658'; reina = '\u2655'; } else { alfil = '\u265D'; torre = '\u265C'; caballo = '\u265E'; reina = '\u265B'; } JRadioButton rbAlfil = new JRadioButton(Character.toString(alfil)); JRadioButton rbTorre = new JRadioButton(Character.toString(torre)); JRadioButton rbCaballo = new JRadioButton(Character.toString(caballo)); JRadioButton rbReina = new JRadioButton(Character.toString(reina), true); rbAlfil.setActionCommand("Alfil"); rbTorre.setActionCommand("Torre"); rbCaballo.setActionCommand("Caballo"); rbReina.setActionCommand("Reina"); ButtonGroup group = new ButtonGroup(); group.add(rbReina); group.add(rbCaballo); group.add(rbTorre); group.add(rbAlfil); JPanel myPanel = new JPanel(); myPanel.add(new JLabel("Promocionar peon a:")); myPanel.add(Box.createHorizontalStrut(15)); // a spacer myPanel.add(rbAlfil); myPanel.add(Box.createHorizontalStrut(15)); // a spacer myPanel.add(rbCaballo); myPanel.add(Box.createHorizontalStrut(15)); // a spacer myPanel.add(rbTorre); myPanel.add(Box.createHorizontalStrut(15)); // a spacer myPanel.add(rbReina); myPanel.add(Box.createHorizontalStrut(15)); // a spacer String[] options = {"OK"}; int result = JOptionPane.showOptionDialog( null, myPanel, "Opciones", JOptionPane.NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]); if (result == 0) { return ca.promocion(group.getSelection().getActionCommand().toString()); } return 'P'; }
private void click(ActionEvent e) { estado = estado == 0 ? 1 : estado; switch (estado) { case 1: desde.append(e.getActionCommand()); estado = 2; colorDesde = botones.get(desde.toString()).getBackground(); botones.get(desde.toString()).setBackground(Color.RED); movimientosPosibles = ca.getMovimientosPosibles(desde, lado); if (movimientosPosibles.length == 1) { // No deja mover desde una posición sin pieza botones.get(desde.toString()).setBackground(colorDesde); desde.delete(0, 2); estado = 0; break; } if (movimientosPosibles.length == 2) { txtInfo.setText("Le toca al otro jugador"); botones.get(desde.toString()).setBackground(colorDesde); desde.delete(0, 2); estado = 0; } else { actualizarTablero(movimientosPosibles); } break; case 2: hasta.append(e.getActionCommand()); if (desde .toString() .equals( hasta.toString())) { // Si hago click en la misma posición se cancela el movimiento txtInfo.setText(""); botones.get(desde.toString()).setBackground(colorDesde); hasta.delete(0, 2); desde.delete(0, 2); estado = 0; despintarTablero(); break; } int columnaHasta = Character.getNumericValue(hasta.charAt(0)) - 10; int filaHasta = Character.getNumericValue(hasta.charAt(1)) - 1; if (movimientosPosibles[filaHasta][columnaHasta] == 1) { // Controla que hasta sea una posición dentro de las permitidas por array de // movimientos posibles char[] pieza = ca.movimiento(desde, hasta); if (pieza[0] == 'F') { String texto = lado ? "Blancas ganan" : "Negras ganan"; txtInfo.setText(texto); } else if (pieza[0] == 'P') { pieza[0] = promocion(); txtInfo.setText("Promoción"); actualizarTablero( pieza[0], desde, hasta, '\u0000'); // Cambiar pieza por lo que devuelva promocion botones.get(desde.toString()).setBackground(colorDesde); estado = 0; lado = lado ? false : true; desde.delete(0, 2); } else { actualizarTablero(pieza[0], desde, hasta, '\u0000'); botones.get(desde.toString()).setBackground(colorDesde); estado = 0; lado = lado ? false : true; desde.delete(0, 2); if (txtInfo.getText().length() != 0) { txtInfo.setText(""); } } actualizarComidas(); actualizarActivo(); if (pieza[1] != '\u0000') { StringBuilder desde1 = new StringBuilder(); StringBuilder hasta1 = new StringBuilder(); if (pieza[2] == '0') { // Lado blancas 1 + ? if (pieza[3] == '3') { // Izquierda ? + A 3 derecha 5 izquierda ? NO desde1.append("A1"); } else if (pieza[3] == '5') { // Derecha ? + H desde1.append("H1"); } } else if (pieza[2] == '7') { // Lado negras 8 + ? if (pieza[3] == '3') { // Izquierda ? + A desde1.append("A8"); } else if (pieza[3] == '5') { // Derecha ? + H desde1.append("H8"); } } switch (desde1.toString()) { case "A1": hasta1.append("D1"); break; case "A8": hasta1.append("D8"); break; case "H1": hasta1.append("F1"); break; case "H8": hasta1.append("F8"); break; } actualizarTablero(pieza[1], desde1, hasta1, 'E'); } } else { txtInfo.setText("Movimiento ilegal"); } hasta.delete(0, 2); break; default: break; } ca.actualizarTablero(estado); }