Ah grazie per la risposta
nono non contavo di fare una discussione infinita come l'altra volta ahaha volevo solo capire se effettivamente qualcosa mi era entrato dall'esercizio precedente o meno, e qualcosina effettivamente ho capito.
ti rispondo punto per punto così da rimanere in tema
1) si mi sarebbe piaciuto fare una piccola "animazione" grafica, dove il numero estratto compare della stessa grandezza del tabellone, per poi rimpicciolirsi e andare nella sua casella (forse troppo complesso). in effetti qua ora mi sto un attimo bloccando perché mi è venuto un dubbio. ho 2 strade per fare il tabellone e poi l'estrazione
a) mi creo una lista e mano a mano che estraggo un numero lo aggiungo alla lista, questo però comporta il controllo dei numeri estratti. in questo caso il tabellone si popolerebbe mano a mano che estratto i numeri, senza che sia già precaricato
b) mi creo una lista di 90 numero e mano a mano che li estraggo li rimuovo dalla lista. questo però comporta un maggiore spazio in memoria occupato, e il doversi appoggiare a un array con i 90 numeri del tabellone, per poterli avere sempre visibili nel tabellone. a quel punto cambierei lo sfondo e basta
quindi, anche se qua siamo a livelli decisamente basi, la logica di un buon programmatore quale dovrebbe essere? minore spazio occupato in memoria e minore velocità, oppure maggiore spazio occupato in memoria e maggiore velocità?
2) mi piaceva il fatto da poter avere le cartelle separate, in modo da poterle spostare, e addirittura, chiudendo una finestra, rimuovere un giocatore, quindi non son troppo entusiasta di dover abbandonare questa idea. per quanto possa essere una simulazione le cui uniche interazioni con l'utente sono la scelta del numero di giocatori e eventualmente la pressione del tasto estrai, mi piacerebbe renderlo più realistico possibile
3) la classe tabellone, per come la sto vedendo io, forse hai ragione ed è inutile. voglio dire, se seguo il punto a, allora posso tranquillamente dare al bancone questa incombenza, ma se seguo il punto b, allora avrò un tabellone che avrà solo una list di 90 numeri e poi il bancone me li rimuoverà.
cioè come ho visto io il progetto: la classe tabellone mi definisce il tabellone, inutile qualora scelgo il punto a. la classe cartella mi definisce la cartella. la classe bancone invece è la classe che procede all'estrazione dei numeri, a questo punto però mi servirebbe una classe "giocatore" che mi controlla i numeri delle cartelle, quindi poi avrei una collezione fatta di tante coppie "cartella-giocatore" che lavorano assieme. forse effettivamente la prima progettazione è stata un po' troppo frettolosa e imperfetta.
4) hai ragione. ero partito dall'idea che una cartella è fatta in un certo modo e che quindi fosse suo "dovere" crearsi da sola, ma alla fine ha più senso come dici te.
quindi sostanzialmente mi ritroverò un sacco di classi semi astratte contenenti solo degli attributi ahaha. e delle classi contenenti solo dei metodi.
riepilogando quindi dovrei avere:
-una classe tabellone con la list dei numeri, inutile nel caso del punto a.
-una classe bancone che mi estrae i numeri e li piazza nel tabellone.
-una classe cartella con solo una matrice cartella vuota.
-una classe generaCartella, tipo, che mi creerà delle cartelle.
-una classe giocatore che si preoccuperà di controllare se il numero estratto dal bancone è presente nella sua cartella.
-una classe frame che si occupa di occuparmi i frame necessari al gioco (come detto, sono molto restio a fare le cartelle su un unico frame).
-una classe tombola con il main e l'invocazione dei frame vari.
così dovrebbe essere più corretto no?
p.s. ho già scritto il pezzettino di codice relativo alla generazione della cartella, e credo sia piuttosto corretto. lo avreste fatto diversamente voi?
private Integer cartella[][] = new Integer[3][9];
Random rnd = new Random();
private void creaCartella()
{
for (int i = 0; i < 3; i++)
{
for (int k = 0; k < 5; k++)
{
int index = rnd.nextInt(9);
while (cartella[i][index] != null)
index = rnd.nextInt(9);
if (index == 0)
cartella[i][index] = rnd.nextInt(9)+1;
else
cartella[i][index] = rnd.nextInt(10) + (index*10);
}
}
}
(c'è solo questo lol, non ho scritto altro, comunque funziona. ho scelto di usare gli integer, perché non mi ricordavo se usando gli int, le posizioni vuote andavano a null o cosa)