Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Memory

  1. #1

    Memory

    Salve a tutti,
    sto sviluppando un' app del gioco memory utilizzando i numeri. Il problema è che non minimamente idea di come caricare random i numeri nelle tessere del gioco. Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da Giovanni255 Visualizza il messaggio
    Il problema è che non minimamente idea di come caricare random i numeri nelle tessere del gioco. Grazie a tutti
    Penso che sia più conveniente partire da un array (o un'altra struttura dati) di tessere già create, e pensare poi a "mescolarle" casualmente.
    Per ora hai intenzione di usare semplicemente dei numeri come tessera, ma facilmente in seguito penserai a creare un oggetto di una qualche classe che modella la tua tessera.

    Se ti va bene questo approccio potresti avere qualcosa di questo tipo:

    codice:
    int[] tessere=new int[]{1,1,2,2,3,3,4,4,5,5};
    Qualunque sia l'oggetto che poi userai come tessera, in questo modo ti assicuri tu del fatto che ci siano coppie di valori diverse tra loro.

    Ora, ipotizzando di volere disporre questi interi in una qualche struttura che modelli il campo di gioco (pensando al memory la cosa più semplice che viene in mente è una matrice con righe e colonne), potresti procedere come segue:

    - Crei una lista (puoi usare ad esempio ArrayList<Integer> in questo caso) dove copi tutte le tessere da estrarre.
    Questo passaggio lo puoi evitare, ma estrarre elementi da una lista è comodo perché poi è molto facile rimuoverli.
    - Istanzi un oggetto della classe Random (java.util.Random) per eseguire l'estrazione casuale (pseudocasuale).
    Potresti anche usare classi migliori per generare numeri casuali, ma penso che possa andare più che bene questa.
    - Crei una struttura dove disporrai casualmente le tessere, ad esempio se hai in totale dieci tessere come sopra, puoi creare una matrice di interi con due righe e cinque colonne.
    - Riempi ogni cella della matrice con un elemento estratto a caso dalla lista, poi rimuovi tale elemento dalla lista per evitare di ripescarlo.

    Ecco se vuoi un esempio di come potresti eseguire questa parte:

    codice:
    Random r=new Random(); ArrayList<Integer> estrazione=new ArrayList<Integer>(); // lista per l'estrazione for(int i=0;i<tessere.length;i++)estrazione.add(tessere[i]); int[][] campo=new int[2][5]; // matrice che conterrà le tessere for(int i=0;i<2;i++)
    { for(int j=0;j<5;j++) { // la prima riga crea un numero casuale da 0 a (num.elementi rimanenti - 1) int casuale=r.nextInt(estrazione.size()); campo[i][j]=estrazione.get(casuale); // assegni alla cella l'elemento preso dalla lista estrazione.remove(casuale); // rimuovi dalla lista l'elemento pescato } }
    Io farei una procedura come questa per fare quello che tu chiedi, visto che è molto semplice da eseguire.
    Non sono però un esperto, altri ti potranno senz'altro suggerire soluzioni più efficienti
    Ultima modifica di Ansharja; 19-01-2016 a 12:17

  3. #3
    Grazie mille, anche la tua soluzione è efficiente!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.