|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Mar 2011
Messaggi: 5
|
[Java] come associare una nome ad un array
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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12869
|
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: Codice:
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.
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Mar 2011
Messaggi: 5
|
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.. Grazie 1000. Ciao, Roccopanz. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Il modo più rapido per effettuare un'associazione chiave - valore è utilizzare una mappa
http://download.oracle.com/javase/6/.../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 |
|
|
|
|
|
#5 | ||
|
Member
Iscritto dal: Aug 2010
Messaggi: 138
|
Quote:
Se poi il tuo obiettivo è creare il gioco del bingo , la mappa va benissimo . Quote:
|
||
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Mar 2011
Messaggi: 5
|
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). 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 |
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Aug 2010
Messaggi: 138
|
Quote:
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). |
|
|
|
|
|
|
#8 | |
|
Junior Member
Iscritto dal: Mar 2011
Messaggi: 5
|
Quote:
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 |
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Aug 2010
Messaggi: 138
|
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...
|
|
|
|
|
|
#10 | |
|
Junior Member
Iscritto dal: Mar 2011
Messaggi: 5
|
Quote:
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 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:49.




















