23/08/08 15:15
Ar-Pharazon
Ciao a tutti, sto facendo un programmino Java semplice e nemmeno troppo efficiente presumo, per simulare il gioco del Mastermind; ora purtroppo non riesco a sistemare un'ultima cosa sul controllo e relativo risultato.
Ho creato, per visualizzare i pioli bianchi e neri che servono a mostrare quanti colori sian stati indovinati, un array di JLabel da 4 elementi; questi li ho posizionati in una griglia di 8 elementi mettendoli 2 a 2, e infine ogni griglia inserita in un ennesimo array di JLabel e poi aggiunti al container centrale... il codice iniziale è questo...
Il problema nasce quando invio la combinazione da verificare;e stasera non va nemmeno più la verifica sulle sequenze -.- . Creo due copie delle sequenze che ho ottenuto (una del gioco e una fatta dall'utente) e verifico prima le posizioni uguali, modificando la stringa quando la trovo, poi solo i colori, ma ora così mi sballa qualcosa nei conteggi, ed incremento i rispettivi contatori. A quel punto faccio dei cicli per aggiornare l'array di esatti (i quattro pioli) da inserire nella griglia ma funziona solo al primo caso. Nel secondo comincia a non metterli più in righe e colonne ma tutti in fila, al terzo già scompaiono le griglie dei due tentativi precendeti e questo non deve succedere...
Il metodo è il seguente:
Boh non so se mi son spiegato benissimo e so che cercare di capire del codice da solo queste informazioni può essere troppo poco, per cui se dovesse servirvi il codice intero fatemi sapere.
Grazie
Ho creato, per visualizzare i pioli bianchi e neri che servono a mostrare quanti colori sian stati indovinati, un array di JLabel da 4 elementi; questi li ho posizionati in una griglia di 8 elementi mettendoli 2 a 2, e infine ogni griglia inserita in un ennesimo array di JLabel e poi aggiunti al container centrale... il codice iniziale è questo...
for(int i=0;i<griglia.length;i++){ griglia[i]=new JPanel(); griglia[i].setLayout(new GridLayout(2,2,1,1)); } for(int j=0;j<griglia.length;j++){ for(int i=0;i<esatto.length;i++){ esatto[i]=new JLabel("1"); griglia[j].add(esatto[i]); centro.add(griglia[j]); } } for(int i=0;i<riga.length;i++){ riga[i]=new JPanel(); riga[i].setLayout(new FlowLayout()); riga[i].add(griglia[i]); centro.add(riga[i]); }
Il problema nasce quando invio la combinazione da verificare;e stasera non va nemmeno più la verifica sulle sequenze -.- . Creo due copie delle sequenze che ho ottenuto (una del gioco e una fatta dall'utente) e verifico prima le posizioni uguali, modificando la stringa quando la trovo, poi solo i colori, ma ora così mi sballa qualcosa nei conteggi, ed incremento i rispettivi contatori. A quel punto faccio dei cicli per aggiornare l'array di esatti (i quattro pioli) da inserire nella griglia ma funziona solo al primo caso. Nel secondo comincia a non metterli più in righe e colonne ma tutti in fila, al terzo già scompaiono le griglie dei due tentativi precendeti e questo non deve succedere...
Il metodo è il seguente:
private class Verifica implements ActionListener{ public void actionPerformed (ActionEvent event){ String seq1_copy[]=new String[4]; String seq2_copy[]=new String[4]; for(int i=0;i<seq1_copy.length;i++){ seq1_copy[i]=seq1[i]; seq2_copy[i]=seq2[i]; } tempts++; int p_nero=0; int p_bianco=0; for(int j=0;j<4;j++){ if(seq2_copy[j]==seq1_copy[j]){ seq2_copy[j]=seq2_copy[j]+"x"; seq1_copy[j]=seq1_copy[j]+"y"; p_nero++; } } //controllo sui bianchi for(int j=0;j<4;j++){ for(int i=0;i<4;i++) if(seq2_copy[j]==seq1_copy[i]) { seq2_copy[j]=seq2_copy[j]+"w"; seq1_copy[j]=seq1_copy[j]+"z"; p_bianco++; } } for(int j=0;j<p_nero;j++){ esatto[j].setIcon(new ImageIcon(color2[0])); } for(int j=0;j<p_bianco;j++){ esatto[j+p_nero].setIcon(new ImageIcon(color2[1])); } for(int i=0;i<esatto.length;i++) griglia[8-tempts].add(esatto[i]); for(int j=0;j<4;j++) griglia[8-tempts].add(esatto[j]); if(p_nero==4){ JOptionPane.showMessageDialog(null,"Hai Vinto!"); JOptionPane.showMessageDialog(null, risultato); System.exit(0); } System.out.print(p_nero); System.out.print(p_bianco); if(tempts==8 && p_nero!=4){ JOptionPane.showMessageDialog(null,"Hai Perso!"); JOptionPane.showMessageDialog(null, risultato); System.exit(0); } for(int z=0;z<4;z++){ indovina[7-tempts][z].setEnabled(true); } } }
Boh non so se mi son spiegato benissimo e so che cercare di capire del codice da solo queste informazioni può essere troppo poco, per cui se dovesse servirvi il codice intero fatemi sapere.
Grazie
aaa