Esercizio sugli SCACCHI

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Esercizio sugli SCACCHI

    Perché è sbagliato? Se provate a far andare l'esercizio è sbagliato. Tipo mettete il re e la Regina nella stessa riga da errore
    package vacanze_estive_18;
    
    import javax.swing.JOptionPane;
    
    public class Vacanze_estive_18 {
    
        public static String disegno(int vettore[]) {
            String o = "";
    
            for (int r = 0; r < 8; r++) {
                for (int c = 0; c < 8; c++) {
                    if (r == vettore[0] && c == vettore[1]) {
                        o += "  •";
                    } else if (r == vettore[2] - 1 && c == vettore[3] - 1) {
                        o += "  ?";
                    } else {
                        o += "  O";
                    }
                }
                o += "\n";
            }
    
            o += "\n";
            return o;
        }
    
        public static void main(String[] args) {
    
            int vettore[] = new int[4];
    
            String input = JOptionPane.showInputDialog("In che riga si trova il Re?");
            vettore[0] = Integer.parseInt(input) - 1;
            input = JOptionPane.showInputDialog("In che colonna?");
            vettore[1] = Integer.parseInt(input) - 1;
            input = JOptionPane.showInputDialog(disegno(vettore) + "In che riga si trova la Regina?");
            vettore[2] = Integer.parseInt(input);
            input = JOptionPane.showInputDialog(disegno(vettore) + "In che colonna?");
            vettore[3] = Integer.parseInt(input);
    
            JOptionPane.showMessageDialog(null, (vettore[0] == vettore[2] || vettore[1] == vettore[3]
                    || vettore[0] - vettore[2] == vettore[1] - vettore[3])
                    ? "La Regina è in posizione tale da poter mangiare il Re"
                    : "La Regina NON è in posizione tale da poter mangiare il Re");
        }
    
    }
    
    E poi volevo sapere se c'è un modo per mettere tutti quei JOptionPane.showInputDialog in un uno, o per accorciarlo perché non è tanto bello da vedere ...
  • Re: Esercizio sugli SCACCHI

    E poi già che ci sono un'altra domanda ancora: Come faccio ad inserire il titolo al posto di "input" con JOptionPane.showInputDialog() ?
  • Re: Esercizio sugli SCACCHI

  • Re: Esercizio sugli SCACCHI

    cherry ha scritto:


    Come faccio ad inserire il titolo al posto di "input" con JOptionPane.showInputDialog() ?
    : è un'altra "versione" dello stesso metodo, che accetta un numero diverso di parametri.

    PS. Questa cosa si chiama overloading di un metodo.
  • Re: Esercizio sugli SCACCHI

            JOptionPane.showMessageDialog(null, (vettore[0] == vettore[2] || vettore[1] == vettore[3]
                    || vettore[0] - vettore[2] == vettore[1] - vettore[3])
                    ? "La Regina è in posizione tale da poter mangiare il Re"
                    : "La Regina NON è in posizione tale da poter mangiare il Re");
    Ma perchè non scrivi più "semplice"? Quello che hai scritto è "apparentemente" elegante perchè hai scritto tutto in una riga ma ha una serie di possibili problematiche:
    a) è difficile da leggere (e quindi da manutenere)
    b) è eventualmente difficile da debuggare
    c) se un giorno ti fosse richiesto di fare qualche altra operazione oltre a visualizzare il messaggio dovresti riscrivere questa logica.
    Perchè non fai una serie di belle if, che ti dicano anche il motivo per cui la regina eventualmente può mangiare il re? Lo pseudocodice te l'ho già postato due volte.
    Comunque, il test della diagonale non prevede tutte le 4 diagonali, perchè non calcoli il valore assoluto delle differenze (anche questo era chiaramente specificato nello pseudocodice).
Devi accedere o registrarti per scrivere nel forum
19 risposte