Hallo,
ist etwas schwierig mit der Rubrik, da es einfach nur ein "C" Thema ist.
Bei meiner "Game of Live" Simulation möchte ich sog. Gleiter erzeugen
und zwar in allen 4 Richtungen.
Das Dumme ist nur, dass ich statt glider0 etc. gern da auch einen Index
hätte. Es sind hier nur 4, könnten aber auch 100 sein.
Geht da in C etwas in der Richtung? Und zwar MIT Einstellung der Werte?
Ein typeof struct ist mir wohl bekannt aber nicht wie ich da Werte
voreinstelle.
Vorschweben würde mir sowas wie orientation[0..3].glider[x][y] aber das
ist nur eine Idee
1
static/* Bytemuster eines Gleiters in allen 4 Richtungen */
Christian J. schrieb:> Das Dumme ist nur, dass ich statt glider0 etc. gern da> auch einen Index hätte. Es sind hier nur 4, könnten aber> auch 100 sein.
Hmm.
Und wozu braucht man so etwas?
Also präziser: Wozu braucht man Hunderte kleine Feldchen,
in denen jeweils dasselbe (bzw. eins von vier) Bitmuster(n)
abgespeichert ist?
Egon D. schrieb:> Wozu braucht man Hunderte kleine Feldchen,> in denen jeweils dasselbe (bzw. eins von vier) Bitmuster(n)> abgespeichert ist?
Nur als Beispiel, braucht man nicht.
"Conway's Game of LiFe", mit F, bitte.
Wozu brauchst du die 100e Muster? Einfach das Spielfeld willkürlich
initialisieren und die Simulation laufen lassen. Dann entstehen die
Glider (und andere Muster) von alleine.
Eric B. schrieb:> Dann entstehen die> Glider (und andere Muster) von alleine.
Ah ja... und irgendwann hören sie auf. Nicht gut für ein "Wand-Bild",
was ständig laufen soll.
https://www.youtube.com/watch?v=WSc9vmUSVzU
Ein Glider Kanone wird übrigens nie zufällig entstehen, das sind alle
"erforschte Muster", von allein entstehen nur Stillleben, Blinker und
Gider, sowie einige sternförmige Pulsare, die sich aufblasen und dann
wieder "verglühen". Es bleiben immer so ein Gekrümel übrig und Zeugs was
blinkt.
Um optisch was zu erzeugen muss man schon deren Startmuster abspeichern
und einspielen!
Die Gleiter erzeuge ich künstlich in allen 4 Flug-Richtungen und schieße
sie ins Feld, 3 Stück, je 90 Grad gedreht, damit ihre Kollisionen neue
Muster erzeugen. Den Fall 3 parallel fliegende Gleiter zu haben, die
niemals kollidieren hatte ich schon bei dem kleinen Feld.
Christian J. schrieb:> Ah ja... und irgendwann hören sie auf. Nicht gut für ein "Wand-Bild",> was ständig laufen soll.
Dass du diese Bedingung in deinem Eingangspost nicht erwähnst, kannst du
mir nicht vorwerfen ;-)
Dein Code hat jetzt doch schon die 4 Glider als indizierbare Muster da;
was ist denn genau das Problem? Mehrere Muster unterschiedlicher Größe?
EDITH: Das verlinkte Youtube Video hat sogar einen Link auf den
Source-Code!
Eric B. schrieb:> Dein Code hat jetzt doch schon die 4 Glider als indizierbare Muster da;> was ist denn genau das Problem? Mehrere Muster unterschiedlicher Größe?
Alles ist gut. Du hast sehr spät auf den Beitrag reagiert. Wollte aber
antworten. Und das Video ist ja von mir.... mit dem Code :-)
Christian J. schrieb:> Ah ja... und irgendwann hören sie auf. Nicht gut für ein "Wand-Bild",> was ständig laufen soll.
Um das zu vermeiden, hat man schon in den späten 70er Jahren des vorigen
Jahrhunderts angefangen, ab und zu zufällig ein paar Pixel einzustreuen.
Das wirkt stationären Endzuständen entgegen.
p.s.
Christian J. schrieb:> Youtube-Video "[Elektronik] Conway's "Game of Life" on STM32F103 "Blue> Pill""
Zähl mal die LEDs deiner Matrix nach ;-)
24 * 32 ≠ 512
Wieso machst du nicht eine Initalisierungsfunktion "AddGlider(x,y,
direction)", die einen Glider in entsprechende Stelle der Matrix
kopiert. Dann kannst du eine entsprechenden x,y,direction in einem Array
speichern\ initialisieren.
micha schrieb:> Wieso machst du nicht eine Initalisierungsfunktion "AddGlider(x,y,> direction)", die einen Glider in entsprechende Stelle der Matrix> kopiert.
Schonmal in die tools.c oben geschaut?
1
/* Erzeugt eine definierbare Anzahl von Gleitern mit