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!