Ayuda desarrollo de tablero de ajedrez que avisa movimientos que puede tomar una ficha.

editado 18 de noviembre en Programación

Hola necesito ayuda llevo dos semanas con este ejercicio y no veo como salir de el, si alguien me pudiera ayudar seria de gran ayuda.
Tengo que hacer un tablero de ajedrez e indicarle donde colocar el alfil y me muestre en rojo las posiciones en las que se puede mover. El programa tiene que realizarse con bucles.
Mi programa:

Scanner keyboard = new Scanner(System.in);

    String bishop = "\u265F", continuar;
    int numFila, numColum, row, column;

    do {
        System.out.println("Indicates the row of the board to position the bishop: ");
        row = keyboard.nextInt();
        System.out.println("Indicates the column of the board to position the bishop: ");
        column = keyboard.nextInt();

        for (numFila = 1; numFila <= 8; numFila++) {
            for (numColum = 1; numColum <= 8; numColum++) {
                if (row == numFila && column == numColum) { //Saca el modulo de fila + columna si el resto es 0 aplica lo siguiente.
                    if (numFila + numColum % 2 == 0) {
                        System.out.print(FONDO_BLANCO + NEGRO + " " + bishop + "  " + RESET);
                    } else {
                        System.out.print(FONDO_NEGRO + BLANCO + " " + bishop + "  " + RESET);
                    }
                } else if (numFila - row == numColum - column) {
                    if (numFila + numColum % 2 == 0) {
                        System.out.print(FONDO_BLANCO + NEGRO + " " + ROJO + "  " + RESET);
                    } else {
                        System.out.print(FONDO_NEGRO + BLANCO + " " + ROJO + "  " + RESET);
                    }
                }
                System.out.println("");
            }
        }
        System.out.println("quieres continuar: ");
        continuar = keyboard.nextLine();

    } while (continuar.equals("yes"));
    keyboard.close();

}

}

Etiquetado:

Comentarios

  • @jepp10 dijo:
    Hola necesito ayuda llevo dos semanas con este ejercicio y no veo como salir de el, si alguien me pudiera ayudar seria de gran ayuda.
    Tengo que hacer un tablero de ajedrez e indicarle donde colocar el alfil y me muestre en rojo las posiciones en las que se puede mover. El programa tiene que realizarse con bucles.
    Mi programa:

    Scanner keyboard = new Scanner(System.in);

      String bishop = "\u265F", continuar;
      int numFila, numColum, row, column;
      
      do {
          System.out.println("Indicates the row of the board to position the bishop: ");
          row = keyboard.nextInt();
          System.out.println("Indicates the column of the board to position the bishop: ");
          column = keyboard.nextInt();
    
          for (numFila = 1; numFila <= 8; numFila++) {
              for (numColum = 1; numColum <= 8; numColum++) {
                  if (row == numFila && column == numColum) { //Saca el modulo de fila + columna si el resto es 0 aplica lo siguiente.
                      if (numFila + numColum % 2 == 0) {
                          System.out.print(FONDO_BLANCO + NEGRO + " " + bishop + "  " + RESET);
                      } else {
                          System.out.print(FONDO_NEGRO + BLANCO + " " + bishop + "  " + RESET);
                      }
                  } else if (numFila - row == numColum - column) {
                      if (numFila + numColum % 2 == 0) {
                          System.out.print(FONDO_BLANCO + NEGRO + " " + ROJO + "  " + RESET);
                      } else {
                          System.out.print(FONDO_NEGRO + BLANCO + " " + ROJO + "  " + RESET);
                      }
                  }
                  System.out.println("");
              }
          }
          System.out.println("quieres continuar: ");
          continuar = keyboard.nextLine();
    
      } while (continuar.equals("yes"));
      keyboard.close();
    

    }
    }

    Solucionado!!!

  • Si nos regalas la solución seria muy util para que el proximo que llegue con una duda parecida, la tenga a la mano.

  • @DragoN dijo:
    Si nos regalas la solución seria muy util para que el proximo que llegue con una duda parecida, la tenga a la mano.

    Pues aquí dejo la solución que pude hacer.

    SOLUCIÓN

    public class Ejercicio022 {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
    
        String bishop = "\u265F",continuar;
        int i, j,row,column;
    
        do {
            System.out.println("Introduce la posición de la fila para posicionar el alfil: ");
            row = keyboard.nextInt();
            System.out.println("Introduce la posición de la columna para posicionar el alfil: ");
            column = keyboard.nextInt();
            keyboard.nextLine(); //Limpiar bufer
    
            for (i = 1; i <= 8; i++) {
                for (j = 1; j <= 8; j++) {
                    if ((i + j) % 2 == 0) {
                        if (i == row && j == column) {
                            System.out.print(FONDO_BLANCO + NEGRO + bishop + " " + RESET);
                        } else if (i + j == row + column || i - j == row - column) {
                            System.out.print(FONDO_ROJO + "  " + RESET);
                        } else {
                            System.out.print(FONDO_BLANCO + NEGRO + "  " + RESET);
                        }
                    } else {
                        if (i == row && j == column) {
                            System.out.print(FONDO_NEGRO + BLANCO + bishop + " " + RESET);
                        } else if (i + j == row + column || i - j == row - column) {
                            System.out.print(FONDO_ROJO + "  " + RESET);
                        } else {
                            System.out.print(FONDO_NEGRO + BLANCO + "  " + RESET);
                        }
                    }
                }
                System.out.println();
            }
            System.out.println("Quieres continuar(s/n): ");
            continuar = keyboard.nextLine();
    
        } while(continuar.equals("s"));
        keyboard.close();
    }
    

    }

Accede o Regístrate para comentar.