^1 THE GAME OF LIFE ...written by TOXO Hi ihr da ! Wie bei DOWN3 (siehe Hugi Ausgabe 1) handelt es sich auch bei The Game of Life um eine Knobelaufgabe, die mit Hilfe des Computers gel”st werden soll. Auf- gabenstellung war folgende: Auf einem Spielbrett mit quadratischen Zellen sollen Zellenkolonien simuliert werden. An sich ganz einfach: Am Anfang wird eine bestimmte Anzahl von Zellen als lebendig "erkl„rt". Dann folgt immer im gleichen Takt ein Wechsel der einzelnen Generationen. Dabei werden folgende Regeln beachtet: ^0 ž Eine tote Zelle mit genau drei Nachbarn wird zum Leben erweckt. ^0 ž Eine Zelle mit zwei oder drei Nachbarn kann berleben. ^0 ž Alle anderen Zellen sterben. Ganz wie im wirklichen Leben: Einmal stirbt die Zelle an šberv”lkerung, ein anderes mal an Einsamkeit. Nur muį ich irgendetwas falsch gemacht haben, denn nach einiger Zeit sind alle Zellen ausgerottet. Das Problem ist, daį der Wechsel der Generationen simultan (gleichzeitig) erfolgen muį, der Compi aber leider nur sequentiell ist. Daher habe ich nicht ein Feld, sondern zwei Felder dimensioniert. In dem einen Feld wird die alte Generation geschrieben, in das andere Feld die neue. ų9-=-=-=-=-=-==-=-=-=--=-=-=-=-=-==-=-=-=--=-=-=-=-=-==-=-=-=--=-=-=-=-=-==-=-= ^0' Life (c) 1996 by TOXO ^0RANDOMIZE TIMER ^0DIM feld(26, 81), feld2(26, 81), feld$(26, 81) ^0' ³ ³ ĄÄÄÄÄÄÄÄÄÄÄ Feld fr die ^0' ³ ³ Bildschirmausgabe ^0' ³ ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Feld fr die neue Generation ^0' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Feld fr die alte Generation ^0Anfang: ^0 COLOR 14, 9: CLS ' Bildschirm l”schen ^0LOCATE 10, 15: PRINT "Bitte gib nun ein, wieviele Zellen leben sollen !"; ^0INPUT "", anzahl ' soviele Zellen leben ^0 ' am Anfang ^0FOR i = 1 TO anzahl ' Zellen belegen ^0 x = INT(RND(1) * 80) + 1 ^0 y = INT(RND(1) * 25) + 1 ^0 feld2(y, x) = 3: feld$(y, x) = "Ū" ^0 GOSUB nachbarn ^0NEXT ^0CLS ^0neuerunde: ^0FOR y = 1 TO 25 ^0 FOR x = 1 TO 80 ^0 IF feld2(y, x) = 3 THEN feld(y, x) = 1 ^0' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Zelle beleben ^0 IF feld2(y, x) = 2 AND feld(y, x) = 1 THEN feld(y, x) = 1 ^0' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Zelle berlebt ^0 IF feld2(y, x) <= 2 OR feld2(y, x) > 4 THEN feld(y, x) = 0: feld$(y, x) = " " ^0 feld2(y, x) = 0 ^0' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Zelle stirbt ^0 NEXT ^0NEXT ^0FOR y = 1 TO 25 ^0 FOR x = 1 TO 80 ^0 LOCATE y, x: PRINT feld$(y, x); ^0 IF feld(y, x) = 1 THEN GOSUB nachbarn ^0 NEXT ^0NEXT ^0GOTO neuerunde ^0END ^0nachbarn: ^0 feld$(y, x) = "Ū" ' Feststellen, wieviele ^0 feld2(y, x - 1) = feld2(y, x - 1) + 1 ' Nachtbars „h, Nachbarn ^0 feld2(y - 1, x - 1) = feld2(y - 1, x - 1) + 1 ' 'ne Zelle hat ^0 feld2(y - 1, x) = feld2(y - 1, x) + 1 ^0 feld2(y - 1, x + 1) = feld2(y - 1, x + 1) + 1 ^0 feld2(y, x + 1) = feld2(y, x + 1) + 1 ^0 feld2(y + 1, x + 1) = feld2(y + 1, x + 1) + 1 ^0 feld2(y + 1, x) = feld2(y + 1, x) + 1 ^0 feld2(y + 1, x - 1) = feld2(y + 1, x - 1) ^0RETURN ų9-=-=-=-=-=-==-=-=-=--=-=-=-=-=-==-=-=-=--=-=-=-=-=-==-=-=-=--=-=-=-=-=-==-=-= Hope u enjoy it ! ^4 TOXO