Oppure

Loading
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...

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
23/08/08 20:19
Ar-Pharazon
Finito tutto... O_o ho sostituito i 3 array annidati con un array unico di JLabel e ho lavoratyo solo su quello.. ora funziona!
aaa