allora io ho scritto nell' ActionPerformed dove ho i miei pulsanti:
codice:
GiocoForza4.CountDown.t.restart();
ma sembra che non cambi niente
il codice della griglia è questo:
codice:
public class Griglia extends JPanel implements ActionListener
{
final static int diametro = 88;
final static int spazio = 6; // spazio tra due pedine
final static int bordiLaterali = 171; // distanza dai bordi verticali
final static int bordiVerticali = 35; // distanza dai bordi orizzontali
private static int colonne = 7; // definiamo il numero di colonne
private static int righe = 6; // definiamo il numero di righe
private static int[][] griglia;
private static Graphics2D g2;
URL url = getClass().getResource("../Immagini/indicatore.png");
ImageIcon img = new ImageIcon(url);
// definiamo i pulsanti
private static JButton a;
private static JButton b;
private static JButton c;
private static JButton d;
private static JButton e;
private static JButton f;
private static JButton g;
//private static GiocoForza4.JLabel time2;
private static JPanel panel;
// andremo a colorare gli spazi bianchi quando clicchiamo sulla colonna
private static int BIANCO = 0;
private static int ROSSO = 1;
private static int GIALLO = 2;
// variabili boolean
private static boolean end;
private static boolean parita = true;
//private int iniziaColore;
private static int turno = 0;
public Griglia()
{
panel = new JPanel();
//time2 = new JLabel();
//panel.add(time2);
griglia = new int[colonne][righe];
/*
* abbiamo aggiunto al pannello, l'azione che ci permette una volta cliccato
* di aggiungere qualcosa
*/
a = new JButton();
a.setContentAreaFilled(false); // questo metodo permette di dare la trasparenza ad un JButton
a.setIcon(img);
a.setPreferredSize(new Dimension(diametro, 25));
a.addActionListener(this);
this.add(a);
b = new JButton();
b.setContentAreaFilled(false);
b.setIcon(img);
b.setPreferredSize(new Dimension(diametro, 25));
b.addActionListener(this);
this.add(b);
c = new JButton();
c.setContentAreaFilled(false);
c.setIcon(img);
c.setPreferredSize(new Dimension(diametro, 25));
c.addActionListener(this);
this.add(c);
d = new JButton();
d.setContentAreaFilled(false);
d.setIcon(img);
d.setPreferredSize(new Dimension(diametro, 25));
d.addActionListener(this);
this.add(d);
e = new JButton();
e.setContentAreaFilled(false);
e.setIcon(img);
e.setPreferredSize(new Dimension(diametro, 25));
e.addActionListener(this);
this.add(e);
f = new JButton();
f.setContentAreaFilled(false);
f.setIcon(img);
f.setPreferredSize(new Dimension(diametro, 25));
f.addActionListener(this);
this.add(f);
g = new JButton();
g.setContentAreaFilled(false);
g.setIcon(img);
g.setPreferredSize(new Dimension(diametro, 25));
g.addActionListener(this);
this.add(g);
inizia();
}
public void paintComponent(Graphics g) // disegniamo la griglia che conterrà le pedine
{
super.paintComponent(g);
//g.setColor(Color.BLUE);
g2 = (Graphics2D) g;
g2.setColor(Color.BLUE);
g2.fillRect(0, 0, getSize().width, getSize().height); // settare le dimensioni del panel
/*
* disegniamo un rettangolo le cui dimensioni si adattano al pannello (ultimi due parametri)
* e i primi due danno la posizione di partenza del rettangolo
*/
for (int i=0; i<colonne; i++)
{
for (int j=0; j< righe; j++)
{
if(griglia[i][j]== BIANCO) // se uguale 0
{g2.setColor(Color.WHITE);} // il colore è bianco
if(griglia[i][j]== ROSSO) // se uguale a 1
{g2.setColor(Color.RED);} // colore rosso
if(griglia[i][j]== GIALLO) // se uguale a 2
{g2.setColor(Color.YELLOW);} // colore giallo
//definiamo il colore che deve avere l'ovale
/*
* disegniamo l'ovale che conterrà le pedine. Come coordianate affinchè possa ripetersi l'ovale
* per il numero di volte che a noi serve, ci poniamo lo spazio
*/
//g2.fillOval((spazio + (spazio + diametro)*i), (spazio + (spazio + diametro)*j) ,diametro, diametro);
g2.fillOval((bordiLaterali + (spazio + diametro)*i), (bordiVerticali + (spazio + diametro)*j) ,diametro, diametro);
//
repaint();
}
}
}
public void inizia()
{
griglia = new int[colonne][righe];
for(int i = 0; i < colonne; i++)
{
for(int j = 0; j < righe; j++)
{
griglia[i][j] = BIANCO;
}
}
}
public static void random()
{
Random x = new Random();
int casuale = x.nextInt(7);
gioca(casuale);
}
public static void gioca(int colonna) // metodo che stabilisce l'inserimento della pedina (gravità sulla riga)
{
for(int i = righe - 1; i >= 0; i--) // parte dal basso
{
//GiocoForza4.CountDown.fermati();
if(griglia[colonna][i] == BIANCO)
{
if((turno % 2) == 0)
{
griglia[colonna][i] = ROSSO;
}
else
{
griglia[colonna][i] = GIALLO;
}
controllo(g2);
GiocoForza4.CountDown.start(); // qui viene richiamato il countDown
turno++;
// Controllo parità
if(turno == 42 && parita == true)
{
Parita x = new Parita();
x.setVisible(true);
}
break;
}
panel.repaint();
}
}
public static void controllo(Graphics g)
{
// controllo verticale sulla colonna
for (int col = 0; col < colonne; col++)
{
for (int rig = righe - 1; rig >= righe - 3; rig--)
{
int confronto = griglia[col][rig];
if(confronto > 0 && confronto == griglia[col][rig-1] && confronto == griglia[col][rig-2] && confronto == griglia[col][rig-3])
{
// if(end) return;
Vittoria x = new Vittoria();
x.setVisible(true);
parita = false;
end = true;
}
}
}
// controllo orizzontale sulla riga
for (int rig = righe - 1; rig >= 0 ; rig--) // riga fissa
{
for (int col = 0; col < colonne - 3; col++) // colonna in movimento
{
int confronto = griglia[col][rig];
if(confronto > 0 && confronto == griglia[col+1][rig] && confronto == griglia[col+2][rig] && confronto == griglia[col+3][rig])
{
Vittoria x = new Vittoria();
x.setVisible(true);
parita = false;
end = true;
}
}
}
// controllo diagonale da sinistra a destra
for (int rig = righe - 4; rig >= 0; rig--)
{
for(int col = 0; col < colonne - 3; col++)
{
int confronto = griglia[col][rig];
if(confronto > 0 && confronto == griglia[col+1][rig+1] && confronto == griglia[col+2][rig+2] && confronto == griglia[col+3][rig+3])
{
Vittoria x = new Vittoria();
x.setVisible(true);
parita = false;
end = true;
}
}
}
// controllo diagonale da destra a sinistra
for (int rig = righe - 3; rig <= righe - 1; rig++)
{
for(int col = 0; col < colonne - 3; col++)
{
int confronto = griglia[col][rig];
if(confronto > 0 && confronto == griglia[col+1][rig-1] && confronto == griglia[col+2][rig-2] && confronto == griglia[col+3][rig-3])
{
Vittoria x = new Vittoria();
x.setVisible(true);
parita = false;
end = true;
}
}
}
}
@Override
public void actionPerformed(ActionEvent evento)
{
GiocoForza4.CountDown.t.restart();
System.out.println("Prova");
if((a) == evento.getSource()) {
if (end) return; // impedisce che altri JButton vengano premuti
// qualora uno dei due utenti ha realizzato Forza 4
gioca(0);
}
if((b) == evento.getSource())
{
if (end) return;
gioca(1);
}
if((c) == evento.getSource())
{
if (end) return;
gioca(2);
}
if((d) == evento.getSource())
{
if (end) return;
gioca(3);
}
if((e) == evento.getSource())
{
if (end) return;
gioca(4);
}
if((f) == evento.getSource())
{
if (end) return;
gioca(5);
}
if((g) == evento.getSource())
{
if (end) return;
gioca(6);
}
}
}
nel metodo gioca avevo posto il lancio del CountDown, credevo fosse corretto, ma ora sto inziando ad avere dubbi..