View Full Version : [Java] come associare una nome ad un array
roccopanz
20-03-2011, 18:15
Ciao a Tutti,
sono nuovo del Forum, spero mi perdonerete se sbaglio titolo o il posto in cui faccio la mia domanda e di conseguenza chiedo a chi è più esperto la cortesia di indirizzarmio sulla discussione corretta.
Mi presento, sono programmatore junior in cobol con soli 3 /12 di esperiena,
e ora mi sto addentrando in autonomia nel mondo java.
Sono nuovissimo di questo nuovo tipo di programmazione , e sto creando il mio primo pseudo programma che non è altro che uno pseudo "gioco".
ho fatto un programmino molto semplice che emula il gioco del bingo,
in input da tastiera do un numero di cartelle(che poi non è altro che il numero dei giocatori) e creo tante cartelle con numeri random da 1-90 tante quante ne vogliamo in input.
Vi spiego il mio problema:
vorrei associare ad ogni cartella creata il nome di un giocatore oppure ancor più semplicemente PLAYER1..PLAYER2...PLAYERn.. in modo che alla fine il pgm mi possa dire : cinquina effettuata da PLAYER1 oppure BINGO effettuato da PLAYER2.
ovviamente il tutto è senza grafica, ancora non sono capace di questo...:-P
ma spero di arrivarci presto. ;)
qualcuno riesce ad aiutarmi?
Grazie Mille in anticipo.
Ciao
roccopanz
Immagino tu stia programmando ad oggetti, per cui se hai una classe Cartella, puoi mettere come attributo di classe il nome del giocatore, passandolo magari come parametro del costruttore.
Così facendo ad esempio potresti pensare ad una cosa del genere:
public class Cartella
{
String nome_giocatore;
public Cartella(String nome_giocatore)
{
this.nome_giocatore = nome_giocatore;
}
public boolean isVincente()
{
// controlla se la scheda è vincente
}
public String getNome()
{
return this.nome_giocatore;
}
}
public class Tavolo
{
ArrayList<Cartella> cartelle_giocatori;
public Tavolo()
{
this.cartelle_giocatori = new ArrayList<Cartella>();
}
public void aggiungi(Cartella c)
{
cartelle_giocatori.add(c);
}
public String controlla()
{
for (Cartella c : cartelle_giocatori)
{
if (c.isVincente()) return c.getNome();
}
return null;
}
}
...
Tavolo t1 = new Tavolo();
Cartella g1 = new Cartella("Giuseppe");
t1.aggiungi(g1);
t1.controlla(); // controlla tutte le cartelle e vede se c'è qualcuno che ha fatto BINGO, può ritornarti dunque il nome del giocatore.
roccopanz
21-03-2011, 08:31
Ciao,
grazie per l'aiuto,
purtroppo la pista della classe Cartella l'ho abbandonata dversi giorni fa in quanto il programma mi andava in loop e non capivo perchè, quindi la cartella l'ho creata nel MAIN richiamando una classe Valorizza che mi restituisce N numeri casuali senza ripetizioni compresi fra 1 e 90. Tali parametri li passo in input.
Cartella [i][giocatori]
i = 15
giocatori = sono quelli digitati in input.
Comunque mi hai dato un idea, magari creo nel Mai un Array con all'interno dei nomi, che viaggia pari pari al numero cartelle.
Subito dopo, se funziona, implemento il mio programma con una classe Cartella, forse avendo un minimo di esperienza in più non avrò lo stesso problema del loop..:D
Grazie 1000.
Ciao,
Roccopanz.
clockover
21-03-2011, 08:54
Il modo più rapido per effettuare un'associazione chiave - valore è utilizzare una mappa
http://download.oracle.com/javase/6/docs/api/java/util/Map.html
questa è l'interfaccia poi scegli la classe che più puoi utilizzare
potresti associare ad ogni cartella un nome di un giocatore
es
Map<Cartella, Giocatore> mp = new HashMap<Cartella, Giocatore>()
in questo modo quando effettui un controllo sulle cartelle ti basterà fare un
Giocatore gg = mp.get(unaCartella);
e avrai immediatamente il giocatore associato alla cartella
ovviamente puoi utilizzare la cartella come un array e il giocatore come una stringa o delle classi... dipende da te
Gin&&Tonic
21-03-2011, 13:31
Ciao,
grazie per l'aiuto,
purtroppo la pista della classe Cartella l'ho abbandonata
Se il tuo obiettivo è quello di imparare a programmare in Java secondo me ti è più utile tornare al tuo oggetto "Cartella" , perché una cosa è creare un'oggetto e definire per esso i vari metodi a te utili ; altra cosa è utilizzare un oggetto già esistente (come le Mappe , citate da clockover) .
Se poi il tuo obiettivo è creare il gioco del bingo , la mappa va benissimo .
purtroppo la pista della classe Cartella l'ho abbandonata dversi giorni fa in quanto il programma mi andava in loop e non capivo perchè, quindi la cartella l'ho creata nel MAIN richiamando una classe Valorizza che mi restituisce N numeri casuali senza ripetizioni compresi fra 1 e 90. Tali parametri li passo in input..
Posta il tuo codice , e vediamo dove hai sbagliato. :)
roccopanz
22-03-2011, 15:23
Ciao,
purtroppo il codice vecchio l'ho cancellato comunque ho ricreato la classe cartella ed ora non mi va più in loop, (chissà cosa avevo combinato).
:boh:
Per quanto riguarda i nomi da assegnare ho fatto in questo modo :
Inserisco il numero di giocatori e poi in ciclo chiedo il nome di ognuno in modo che ho due array separati ma che vanno pari passo.
Quindi cartella[n] [1] --->>> giocatore[1]
e così via fino a n giocatori
Appena arrivo a casa posto il codice, così magari qualcuno mi indicherà pure se è troppo "pesante"
Grazie a tutti
Roccopanz
Gin&&Tonic
22-03-2011, 22:57
Ciao,
Per quanto riguarda i nomi da assegnare ho fatto in questo modo :
Inserisco il numero di giocatori e poi in ciclo chiedo il nome di ognuno in modo che ho due array separati ma che vanno pari passo.
Quindi cartella[n] [1] --->>> giocatore[1]
e così via fino a n giocatori
non ho ben capito cosa hai fatto , comunque volendo nel tuo oggetto cartella potresti inserire anche il nome del Proprietario.
Io farei cosi cartella : Cartella( int CodCartella ,int M[][] , String Proprietario);
nella matrice M inserisci i valori della cartella del bingo (se non sbaglio ha 5 colonne e 3 righe ) , in Proprietario inserisci il nome proprietario (volendo puoi crearti un oggetto Persona e quindi passare "Persona x " piuttosto che Proprietario ) , in codCartella un codiceunivoco (sotto l'ipotesi che uno stesso proprietario vincente abbia più cartelle , sai con quale ha vinto).
roccopanz
23-03-2011, 18:26
non ho ben capito cosa hai fatto , comunque volendo nel tuo oggetto cartella potresti inserire anche il nome del Proprietario.
Io farei cosi cartella : Cartella( int CodCartella ,int M[][] , String Proprietario);
nella matrice M inserisci i valori della cartella del bingo (se non sbaglio ha 5 colonne e 3 righe ) , in Proprietario inserisci il nome proprietario (volendo puoi crearti un oggetto Persona e quindi passare "Persona x " piuttosto che Proprietario ) , in codCartella un codiceunivoco (sotto l'ipotesi che uno stesso proprietario vincente abbia più cartelle , sai con quale ha vinto).
Ciao,
ecco la classe cartella che ho creato:
import javax.swing.JOptionPane ;
//import javax.swing.JOptionPane.* ;
public class cartella
{
int player;
int riga;
int colonna;
int[][] cartella;
public cartella()
{
// inserisco il numero di cartelle da acquistare
String giocstr = JOptionPane.showInputDialog("Ciao, ad ogni giocatore sarà assegnata un cartella.\nQuanti giocatori siete? ");
// Converto Valori String da InputDialog in Integer
int giocatori = Integer.parseInt(giocstr);
player = giocatori;
cartella = new int[15][giocatori];
for (int g=0; g<giocatori; g++)
{
valorizza v = new valorizza(90);
for (riga=0; riga<15; riga++)
{
cartella[riga][colonna] = v.cesto[riga];
}
colonna++;
}
}
}
poi al'interno del Main ho effettuato questo ciclo di for per scegliere i nomi dei concorrenti
for (int g=0; g<c.player;g++)
{
// inserisco il nome dei giocatori
partecipante = g+1;
String nomi = JOptionPane.showInputDialog("Inserisci il nome del " + partecipante +"° giocatore ");
player[g] = nomi;
System.out.println("primo nome : " + player[g]);
t.time(1500);
}
di seguito, l'indice della cartella e del giocatore è lo stesso, pertanto restano associati.
Comunque mi hai dato una bella idea, ora proverò a modificare il programma come hai indicato tu, sicuramente sarà più snello e performante...
Grazie 1000.
PS: appena finito chiederò aiuto su come farlo diventare "GRAFICO" ...
Ciao
Roccopanz
Gin&&Tonic
24-03-2011, 08:19
forse hai dimenticato di scrivere qualche pezzo di codice (qui sul forum intendo ), cmq se non vuoi associare nomi ai giocatori la tua soluzione credo vada bene... :D
roccopanz
27-03-2011, 16:29
forse hai dimenticato di scrivere qualche pezzo di codice (qui sul forum intendo ), cmq se non vuoi associare nomi ai giocatori la tua soluzione credo vada bene... :D
Ciao, ho bisogno di un aiuto su eclipse.
Praticamente volevo riprendere il gioco del bingo, ma...:
1) non me lo fa aprire insieme a tutte le classi che ho creato (sono tutti .java)
2) quando li apro, non me li fa compilare...
Se voglio farlo devo creare un nuovo pregetto, ricreare nuove classi e fare copia e incolla...
uffff... è come se non mi riconosce il progetto, forse quando faccio salva devo farlo in modo particolare?
se serve posso allocare le schermate.
Grazie 1000.
Ciao
Roccopanz
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.