import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.lang.*; import javax.swing.border.*; /***********************************************************************************/ class Casella { boolean viva,futuro; Rectangle r; //---------------------------------------------------------------------- Casella(int i, int j, int l) { viva = false; futuro = false; r = new Rectangle(i*l,j*l,l,l); } } /***********************************************************************************/ class Schema { int n_c, n_r, l; Casella[][] s; //---------------------------------------------------------------------- Schema(int nc, int nr, int lt) { n_c = nc; n_r = nr; l = lt; s = new Casella[nc][nr]; for (int i=0;in_colonne-1)||(j>n_righe-1)) return; schema.s[i][j].viva = !schema.s[i][j].viva; if (schema.s[i][j].viva) n_vive++; else n_vive--; distribuzione = (n_vive0) n_righe=aux; if (n_righe>MAX_DIM) n_righe=MAX_DIM; pannello.setParametri(n_colonne, n_righe, lato, schema); break; case 12: aux$ = String.valueOf(n_colonne); aux$ = JOptionPane.showInputDialog(this,"Numero di colonne?",aux$); aux = leggeIntero(aux$); if (aux>0) n_colonne=aux; if (n_colonne>MAX_DIM) n_colonne=MAX_DIM; pannello.setParametri(n_colonne, n_righe, lato, schema); break; case 13: aux$ = String.valueOf(n_iniziali); aux$ = JOptionPane.showInputDialog(this,"Celle inizialmente vive",aux$); aux = leggeIntero(aux$); if (aux>0) n_iniziali=aux; pannello.setParametri(n_colonne, n_righe, lato, schema); break; case 14: aux$ = String.valueOf(intervallo); aux$ = JOptionPane.showInputDialog(this,"Intervallo? (ms)",aux$); aux = leggeIntero(aux$); if (aux>0) intervallo=aux; timer.setDelay(intervallo); pannello.setParametri(n_colonne, n_righe, lato, schema); break; case 21: InizioCasuale(); break; case 22: InizioManuale(); break; case 31: Evoluzione(); break; default: JOptionPane.showMessageDialog(this,"Caso non previsto."); }; } //------------------------------------------------------------------- int NCasuale(int max) { return((int)Math.round(Math.floor(max*Math.random()))); } //------------------------------------------------------------------- int MisuraLato() { int lc = 360/n_colonne; int lr = 360/n_righe; int ris=lc; if (lrn_righe*n_colonne) { JOptionPane.showMessageDialog(this,"Numero di cellule eccessivo. Diminuire."); return; }; distribuzione=false; NuovoSchema(); do { i = NCasuale(n_colonne); j = NCasuale(n_righe); if ( !schema.s[i][j].viva) { schema.s[i][j].viva=true; n_vive++; } } while(n_viven_righe*n_colonne) { JOptionPane.showMessageDialog(this,"Numero di cellule eccessivo. Diminuire."); return; }; evoluzione = true; distribuzione=false; for (int i=0; i