Wir programmieren Teil 8

Dieses ist der 8. Teil. Hier geht es zum 7. Teil.

Erstmal zur Lösung:

int[][] feld=new int[10][10];
int[][] z=new int[10][10];
int xs=0;
int ys=0;
// --------------------------------------------------------
// Setup, also Erstellen des Programmfensters
void setup() {
size(640,480);
xs=width/8;
ys=height/8;
smooth(); frameRate(3);
for (int x=1;x < 9; x++) {
for (int y=1;y < 9; y++) {
if (int(random(0,3))==1) feld[x][y]=1;
}
}
fill(255,0,0);
}
// --------------------------------------------------------
// Hauptfunktion
void draw() {
background(0,0,0);
int l=0;
for (int x=1;x < 9; x++) {
for (int y=1;y < 9; y++) {
l=-feld[x][y];
for (int xx=-1; xx < 2; xx++) {
for (int yy=-1; yy < 2; yy++) {
l+=feld[x+xx][y+yy];
}
}
if (l==3) { z[x][y]=1; }
if (l==2) { z[x][y]=feld[x][y]; }
if (l > 3) { z[x][y]=0; }
if (l < 2) { z[x][y]=0; }
}
}
for (int x=1;x < 9; x++) {
for (int y=1;y < 9; y++) {
feld[x][y]=z[x][y];
if (feld[x][y]==1) {
rect((x-1)*xs,(y-1)*ys,xs-1,ys-1);
}
}
}
}

Schade ist, dass wir keine Steine selbst setzen können, darum kümmern wir uns jetzt.

Am elegantesten ginge das Setzen und Löschen von lebenden Zellen mit der Maus. Hierfür gibt es die Systemvariablen mouseX, mouseY, mouseButton, mousePressed, keyPressed . Den Wert von Systemvariablen bestimmt das System. Bisher hatten wir am Anfang z.B. width und height genutzt, die die Breite und Höhe des Fensters enthalten. mouseButton enthält z.B. ein einen gültigen Wert (z.B. LEFT) in dem Moment, wo mousePressed true enthält. So könnte man z.B. abfragen, ob die linke Taste gedrückt wurde mit:

if (mousePressed && mouseButton==LEFT) { ... }

Gut wäre es, mit einem Linksklick eine Zelle zum Leben zu erwecken und mit einem Rechtsklick sie sterben zu lassen.

Aus der Mausposition müssen wir noch die Koordinaten des Kästchens berechnen. Dabei ist zu beachten, dass mouseX 0 ist, sobald der Mauszeiger nicht im Fenster ist. Auch werden die Reihen und Zeilen 0 und 9 nicht angezeigt!
In meiner Lösung nutze ich für die Kästchenkoodinaten, die sich aus der Position des Mauszeigers ergeben die Variablen mx und my.

Unser bisheriges Programm nutzt die Eigenschaft, dass z.B. nur 3 mal pro Sekunde ein Generationsschritt passiert. Diese Programmierung hätte zur Folge, dass auch die Maus oder besser das mit der Maus gewählte Kästchen sich so träge verhält. Abhilfe schaftt hier wieder ein Counter, sodass wir wieder mit 30 Frames pro Sekunde das Bild aufbauen lassen, aber nur alle 20 Frames einen Generationsschritt machen.
In meiner Lösung nutze ich hierfür die Variable framecount.

Obwohl nur alle 20 Frames eine Generationsschritt erfolgen soll, muss das Feld bei jedem Durchgang sichtbar gemacht werden! Sonst bekommen wir mit dem folgenden Punkt Probleme.

Das durch die Maus gewählte Kästchen lasse ich wie folgt einfärben:

fill(255,255,255,60);
rect((mx-1)*xs,(my-1)*ys,xs-1,ys-1);

Der 4. Wert bei fill sagt aus, dass die Füllung durchschimmert. Die Farbkodierung nennt sich folglich RGBA.

Noch eine letzte letzte Forderung: Solange eine Taste gedrückt ist, sollten keine Generationsschitte erfolgen. Auf diese Art lassen sich auch die besonderen Konstellationen aus dem Wikipediaartikel nachbauen.

Es gibt viel zu tun, also legt los! Bis morgen mit Teil 9!

Vielleicht auch interessant:

Termine

  • 04.07.–14.08. Sommerferien
  • 15.08. Schulstart für die Klassen 6-12
  • 21.08. Podiumsdiskussion Amnesty International 17:00-19:00
  • 23.09.–28.09. Kennenlernfahrt Jg. 5
  • 04.10.–18.10. Herbstferien
  • 04.11.–08.11. MIG-Spiel
  • 17.12. Probentag Adventskonzert
  • 19.12. Adventskonzert Nr. 1 17:00-19:00
  • 19.12. Adventskonzert Nr. 2 19:30-21:30
  • 23.12.–06.01. Weihnachtsferien
  • 24.01.–01.02. Ski- und Snowboardfahrt
  • 27.01.–29.01. Musik-Probenfahrt
  • 03.02.–04.02. Halbjahresferien
  • 17.02. Beginn Chorprojekt
  • 09.03.–13.03. Woche der offenen Musik-Ensembles
  • 23.03. Ende Chorprojekt
  • 24.03. Workshopkonzert
  • 30.03.–14.04. Osterferien
  • 14.05.–16.05. Unterstufenchorfahrt
  • 22.05. Brückentag
  • 01.06.–02.06. Pfingsten
  • 24.06. Probentag Sommerkonzert
  • 26.06. Sommerkonzert 17:00-19:00
  • 26.06. Sommerkonzert 19:30-21:00
  • 16.07.–26.08. Sommerferien

Programmieren und Basteln

Du interesssierst Dich für Computer, Elektronik und Programmieren?Dann schau doch einfach mal von Dienstag bis Freitag jeweils in der 7. Stunde im Computerraum 1 bzw....
Aufrufe: 7491 - 20.05.2012 mehr

Programmieren und Basteln

Liebe Schülerinnen und Schüler, leider ist eine Stunde pro Woche in der Schulzeit viel zu kurz zum Programmieren und Arduino-Basteln. Kaum hat man das...
Aufrufe: 7495 - 26.03.2012 mehr

Langweilige Präsentationen?

Oben ist nur das Standardbild zu sehen? Dann ist der Browser nicht aktuell genug, verwendet IE 9.0, Firefox, Opera, Chrome, Safari oder besser! Nutzern des IE könnte...
Aufrufe: 7061 - 23.11.2011 mehr

Wir programmieren Teil 9

Dieses ist der Teil 9 der Reihe. Hier geht es zum 8. Teil.Die Lösung für die Aufgabe habe ich als Applet heraufgeladen. Auch der Quellcode ist hier...
Aufrufe: 10515 - 05.08.2011 mehr

Wir programmieren Teil 7

Nachdem wir unser erstes Spiel programmiert haben, widmen wir uns nun weiteren sprachlichen Strukturen.Wir wollen [[Conways Spiel des Lebens]]...
Aufrufe: 10939 - 05.08.2011 mehr

Wir programmieren Teil 6

Dieses ist der 6. Teil der Reihe. Hier findet ihr den 5. Teil.Die Lösung und unser bisheriges Spiel findet ihr auf folgender Seite. Dort ist auch der...
Aufrufe: 10525 - 05.08.2011 mehr

Wir programmieren Teil 5

Dieses ist der 5. Teil der Reihe. Hier geht es zum 4. Teil.Aufgabe war es, die Fehler zu finden. Der 1. Fehler war einfach zu finden, das Programm ließ...
Aufrufe: 13276 - 04.08.2011 mehr

Wir programmieren Teil 4

Dieses ist der vierte Teil, hier geht es zum 3. Teil.Zuerst wie immer zur Lösung. Dieses mal ist meine Musterlösung ggf. schwieriger zu verstehen, da...
Aufrufe: 13345 - 03.08.2011 mehr

Wir programmieren Teil 3

Dieses ist der 3. Teil der Reihe, hier geht es zum 2. Teil.Zuerst zur Lösung der kleinen Aufgaben:void setup() int x = 0;int y = 0;int vx = 3;int vy =...
Aufrufe: 13085 - 03.08.2011 mehr

Wir programmieren Teil 2

Dieses ist der 2. Teil, hier gehts zum Einstiegsteil.Zuerst mal eine möglich Lösung der kleinen Aufgaben. Die Änderungen sind fett markiert und...
Aufrufe: 14043 - 02.08.2011 mehr

Wir programmieren

In dieser Beitragsreihe könnt Ihr in das Schreiben von Computerprogrammen einsteigen. Wenn ihr Lust habt mehr mit Eurem Computer zu tun als nur zu...
Aufrufe: 11611 - 02.08.2011 mehr

Wochenend-Bastelei es geht weiter

hwNach den doch recht schleppenden Beginn geht es nun doch vorwärts. Auf der Seite http://reactivision.sourceforge.net/ fand sich die benötigte Software und ich wagte...
Aufrufe: 8410 - 20.02.2011 mehr

Wochenend-Bastelei Multitouch-Table

hwManche Projekte dauern doch etwas länger. Nachdem ich mich letztes Wochenende um die Beleuchtung der Acrylglasplatte gekümmert hatte, geht es in dieser Woche um die...
Aufrufe: 9801 - 19.02.2011 mehr

Wochenend-Bastelei gescheitert (noch)

hwTja, so kann es gehen, da nehme ich mir mein nächstes Projekt vor, besorge die Materialien und dann schaffe ich es nicht am Samstag fertig zu werden und ich denke,...
Aufrufe: 10762 - 13.02.2011 mehr

Wochenend-Bastelei

hwLanges Wochenende und ebenso lange Weile? Da kann ich helfen, beim Stöbern nach Projekten für unsere Schule stieß ich auf folgendes YouTube-Video. Das können wir...
Aufrufe: 10486 - 29.01.2011 mehr