Visualizzazione dei risultati da 1 a 7 su 7

Discussione: gioco del 15 Java

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16

    gioco del 15 Java

    Buongiorno a tutti,
    Vi scrivo in merito ad alcuni chiarimenti sulla seguente classe.

    L'obiettivo è quello di costruire una matrice LxL e disporre su essa N-1 valori più lo spazio libero in modo casuale.

    Non mi è chiaro perchè
    codice:
    sequenza[l++] = r.nextInt(CASELLE);
    e come riempie l'array ausiliario di nome griglia.


    codice:
    public Quindici() {
    griglia = new byte[LATO][LATO];
    Random r = new Random();
    int[] sequenza = new int[CASELLE];
    int k,l=0;
    boolean flag;
    sequenza[l++] = r.nextInt(CASELLE);
    do {
    flag = false;
    k = r.nextInt(CASELLE); // da 0 a 15 compresi
    for (int j=0; j<l; j++) {
    if(sequenza[j]==k)
    flag = true;
    }
    if (!flag) {
    sequenza[l] = k;
    l++;
    }
    } while (l<CASELLE);
    for (int i=0; i<LATO; i++)
    for (int j=0; j<LATO; j++)
    griglia[i][j] = (byte)sequenza[i*LATO+j];
    }

    Saluti,

    Fabio

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    La logica di estrazione dei numeri "unici" comunque non è il massimo. Perché va per "tentativi" iterando possibilmente più volte finché non pesca un numero che non c'è già nell'array sequenza. Insomma, tecnicamente può funzionare (non l'ho esaminato nei dettagli ma perlomeno ad occhio il ragionamento "fila") ma non è l'approccio "buono".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16
    Io non capisco perché nell array va a inserire come primo numero casuale in posizione 1.

    Riuscite a spiegarmi ?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da pianca90 Visualizza il messaggio
    Io non capisco perché nell array va a inserire come primo numero casuale in posizione 1.
    No, il primo numero casuale lo inserisce all'indice 0.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16
    sequenza[l++] = r.nextInt(CASELLE);

    Non incrementa il valore di l a 1 ?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da pianca90 Visualizza il messaggio
    sequenza[l++] = r.nextInt(CASELLE);

    Non incrementa il valore di l a 1 ?
    Sì ma DOPO aver "usato" il valore di 'l'. Prima usa il valore, ovvero prima assegna a sequenza[l], poi incrementa.
    Concetto super-basilare sugli operatori ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    16
    Avevo dimenticato questo piccolo particolare sugli operatori...

    Adesso si spiega tutto...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.