Lustig
/** Conways Spiel des Lebens (etwa B845, S.330): In dieser Lebensform besteht ein Organismus aus einer einzelnen Zelle, die an (lebendig) oder aus (tot) sein kann. Die Regeln sind: 1. Wenn eine Lebensform zwei oder drei Nachbarn hat, überlebt sie. Anderfalls stirbt sie 2. Wenn eine leere Zelle von genau drei Zellen umgeben ist, dann wird eine neue Lebenszelle geboren. 3. Alle Geburten und Todesfälle finden gleichzeitig statt. Das Spiel des Lebens wurde um 1970 von John Horton Conway, einem Mathematiker der Univerität Cambridge entwickelt und von Martin Gardner im Buch "Wheels, Life and Other Mathematical Amusements" bekannt gemacht Es gibt Figuren, die sich zyklisch verändern (etwa Pulsar) oder sich bewegen (etwa Glider) Die hier programmierte Welt ist ein Torus. */ import java.awt.*; import java.applet.Applet; import java.awt.event.*; public class Life01 extends Applet implements ActionListener, MouseListener { private Welt welt; // Die Welt der Lebewesen, siehe unten private Button startB, stopB; private Label zeitInfoL; public void init() { startB = new Button("Start"); add(startB); startB.addActionListener(this); stopB = new Button("Stop"); add(stopB); stopB.addActionListener(this); zeitInfoL = new Label("Zeit steht."); add(zeitInfoL); this.addMouseListener(this); Graphics g = getGraphics(); welt = new Welt(g); welt.start(); } public void paint(Graphics g) { welt.zeichneWelt(); welt.zeichneLebewesen(); } public void actionPerformed(ActionEvent ev) { if (ev.getSource()==startB) { welt.starten(); zeitInfoL.setText("Zeit läuft."); } if (ev.getSource()==stopB) { welt.anhalten(); zeitInfoL.setText("Zeit steht."); } } public void mouseClicked(MouseEvent ev) { int x = ev.getX(); int y = ev.getY(); welt.aendereLeben(x,y); welt.zeichneLebewesen(); } public void mouseReleased(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } // ende class Life01 class Welt extends Thread { private final int weltX0 = 10, weltY0=40; // linke obere Ecke der Welt private final int dX = 4, dY = 4; // Größe der Lebenszellen private final int nX=150, nY=80; // Indexgroesse lebewesen private boolean lebewesen[][]; private boolean lebewesenAlt[][]; private final Color lebensFarbe = Color.red; //Zeichenfarben private final Color todesFarbe = Color.yellow; private final Color weltFarbe = Color.green; private final int zyklusZeit = 50; // in Millisekunden private Graphics g; private boolean weitermachen = false; public Welt(Graphics gE) { g = gE; lebewesen = new boolean[nX][nY]; lebewesenAlt = new boolean[nX+2][nY+2]; // im alten Zustand lebewesenAlt[i+1,j+1] wird der Zustand // von lebewesen[i,j] abgespeichert. Der Rand wird dabei // torusartig ergänzt. // zeichne Gleider setzeGlider(5,5); setzeGlider(40,50); setzeGlider(126,55); setzeGlider(107,55); // zeichne Pulsar setzePulsar(25,15); setzePulsar(60,35); setzePulsar(20,70); setzePulsar(120,30); zeichneWelt(); zeichneLebewesen(); } public void aendereLeben(int x, int y) { int nx = findeLebewesenX(x); int ny = findeLebewesenY(y); if ( (nx>=0) && (ny>=0) ) { if (lebewesen[nx][ny]) { lebewesen[nx][ny]=false; } else { lebewesen[nx][ny]=true; } } } private int findeLebewesenX(int x) { int nx = (x-weltX0)/dX; if (nx <0 || nx >=nX) nx=-1; return nx; } private int findeLebewesenY(int y) { int ny = (y-weltY0)/dY; if (ny <0 || ny >=nY) ny=-1; return ny; } public void zeichneWelt() { int i,j; g.setColor(weltFarbe); g.fillRect(weltX0, weltY0, nX*dX, nY*dY); } public void zeichneLebewesen() { int i, j; for (i=0; i
C²lock
 
Benutzername:
Kennwort:
Metin2
 
Metin2 - Oriental Action MMORPG - Oriental Action MMOG
 
bei mir sind schon so viele drauf gwesen! 2253 Besucher (6651 Hits) erzähl meine seite weiter
Diese Webseite wurde kostenlos mit Homepage-Baukasten.de erstellt. Willst du auch eine eigene Webseite?
Gratis anmelden