In diesem Beispiel kann eine Regelkette aus 16 Zeichen für die Ausgabe einer Turmitenbahn mit 16 verschiedenen Farben eingegeben werden:
import java.awt.*;
import java.awt.event.*;
public class Turmiten extends Frame implements ActionListener {
int regel[] = new int [16];
Button ok;
TextField eingabe;
Turmiten() {
super("Turmiten gibt es in jedem PC ;-)");
setLayout(new FlowLayout());
Label was = new Label("Regelkette, 16 Ziffern 0-1: ");
add(was);
eingabe = new TextField("1001100110011001",16);
add(eingabe);
ok = new Button("ok");
add(ok);
ok.addActionListener(this);
werteuebernehmen();
}
public static void main (String[] arguments) {
Turmiten proggi = new Turmiten();
WindowListener wl = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
proggi.addWindowListener(wl);
proggi.setLocation(100,100);
proggi.setSize(500,570);
proggi.show();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == ok) {
werteuebernehmen();
repaint();
}
}
public void werteuebernehmen() {
int el;
String eintrag = eingabe.getText();
el = eintrag.length();
if (el > 16) el = 16;
for (int i=0; i<el;i++) {
if (eintrag.charAt(i) == '0') regel[i]=-1;
if (eintrag.charAt(i) == '1') regel[i]=1;
}
}
public void paint(Graphics bs) {
int x;
int y;
int i;
int j;
int zaehler;
int richtung;
int[][] Welt = new int [100][100];
Color lblue = new Color(128,128,255);
Color dblue = new Color(0,0,192);
Color dyellow = new Color(192,192,0);
Color lred = new Color(255,128,128);
Color dred = new Color(192,0,0);
Color dgreen = new Color(0,192,0);
for (i=0;i<100;i++)
for (j=0;j<100;j++)
Welt[i][j]=0;
bs.setColor(Color.white);
bs.fillRect(0,70,500,500);
richtung = 1;
x = 50;
y = 50;
x++;
zaehler = 0;
do {
if (Welt[x][y]==0) {
richtung = ((richtung + regel[0]) % 4);
Welt[x][y]=1;
bs.setColor(Color.red);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==1) {
richtung = ((richtung + regel[1]) % 4);
Welt[x][y]=2;
bs.setColor(Color.green);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==2) {
richtung = ((richtung + regel[2]) % 4);
Welt[x][y]=3;
bs.setColor(Color.green);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==3) {
richtung = ((richtung + regel[3]) % 4);
Welt[x][y]=4;
bs.setColor(Color.yellow);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==4) {
richtung = ((richtung + regel[4]) % 4);
Welt[x][y]=5;
bs.setColor(Color.gray);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==5) {
richtung = ((richtung + regel[5]) % 4);
Welt[x][y]=6;
bs.setColor(Color.magenta);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==6) {
richtung = ((richtung + regel[6]) % 4);
Welt[x][y]=7;
bs.setColor(Color.orange);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==7) {
richtung = ((richtung + regel[7]) % 4);
Welt[x][y]=8;
bs.setColor(Color.cyan);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==8) {
richtung = ((richtung + regel[8]) % 4);
Welt[x][y]=9;
bs.setColor(Color.pink);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==9) {
richtung = ((richtung + regel[9]) % 4);
Welt[x][y]=10;
bs.setColor(dred);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==10) {
richtung = ((richtung + regel[10]) % 4);
Welt[x][y]=11;
bs.setColor(dgreen);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==11) {
richtung = ((richtung + regel[11]) % 4);
Welt[x][y]=12;
bs.setColor(dblue);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==12) {
richtung = ((richtung + regel[12]) % 4);
Welt[x][y]=13;
bs.setColor(dyellow);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==13) {
richtung = ((richtung + regel[13]) % 4);
Welt[x][y]=14;
bs.setColor(lred);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==14) {
richtung = ((richtung + regel[14]) % 4);
Welt[x][y]=15;
bs.setColor(lblue);
bs.fillRect(5*x,5*y+70,5,5);
} else if (Welt[x][y]==15) {
richtung = ((richtung + regel[15]) % 4);
Welt[x][y]=0;
bs.setColor(Color.white);
bs.fillRect(5*x,5*y+70,5,5);
}
if (richtung == 0) {
richtung=4;
y--;
} else if (richtung == 1)
x++;
else if (richtung == 2)
y++;
else if (richtung == 3)
x--;
zaehler++;
} while (((zaehler<100000) || (x!=50) || (y!=50)) &&
((x>0) && (x<100) && (y>0) && (y<100)));
}
}
Beachte, wie eigene Farben definiert werden!