www.pudn.com > onedimca.rar > CCA.java
package ca;
// Simple Java class for visualization of cellular automata.
// Juha Haataja, CSC, Finland.
// E-mail: Juha.Haataja@csc.fi.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
// Container for the CA image data
class CA_Canvas extends Canvas implements Runnable {
private int width = -1;
private int height = -1;
private int gridwidth=1;
private int number,number2;
private int type=0;
private TotalisticCA CA = null;
private int[] config = null;
private Color[] coloring = null;
private Image ca_picture = null;
public CA_Canvas(int k, int r, long nr,int type1) {
CA = new TotalisticCA(k, r, nr,type1);
type=type1;
coloring = get_colors(k);
}
public void reinit(int k, int r, long nr,int type1) {
CA = new TotalisticCA(k, r, nr,type1);
type=type1;
coloring = get_colors(k);
}
private Color[] get_colors(int n) {
Color[] result = new Color[n];
float hue;
int i;
result[0] = Color.white;
result[1] = Color.black;
if (n > 2) {
for (i = 2; i < n; i++) {
hue = (i-2.0F)/(n-1.0F);
result[i] = Color.getHSBColor(hue,1.0F,1.0F);
}
}
return result;
}
public void run() {
Graphics g;
Dimension d = size();
int[] ca_line;
width = d.width;
number= (int)(width/gridwidth);
height = d.height;
number2=(int)(height/gridwidth);
config = CA.config_init(number);
ca_picture = createImage(width,height);
g = ca_picture.getGraphics();
// Draw the background
g.setColor(coloring[0]);
g.fillRect(0, 0, width, height);
// Draw the initial configuration
for (int i = 0; i < number; i++) {
g.setColor(coloring[config[i]]);
g.fillRect(i*gridwidth, 0, gridwidth, gridwidth);
}
show_picture();
// Compute and draw rest of the picture
ca_line = config;
for (int j = 1; j