PROGRAM GAMEOFLIFE (INPUT,OUTPUT); CONST MAX1=9 ; MAX2=10; B="*"; F=" "; VAR ZAELER:ARRAY[1..MAX1,1..MAX1] OF INTEGER; ALT,NEU:ARRAY[0..MAX2,0..MAX2] OF CHAR; ANTWORT,WAHL,N,J,I,ZEILE,SPALTE:INTEGER; PROCEDURE BESETSTENACHBARNZAELEN; VAR I,J,X,Y :INTEGER; BEGIN FOR I:=1 TO MAX1 DO FOR J:=1 TO MAX1 DO BEGIN ZAELER[I,J]:=0; FOR X:=I-1 TO I+1 DO FOR Y:=J-1 TO J+1 DO IF ALT[X,Y]=B THEN ZAELER[I,J]:=ZAELER[I,J]+1; IF ALT[I,J]=B THEN ZAELER[I,J]:=ZAELER[I,J]-1 END; END; PROCEDURE EINSBISDREISSIG; BEGIN CASE WAHL OF 1:ALT[1,1]:=B; 2:ALT[1,2]:=B; 3:ALT[1,3]:=B; 4:ALT[1,4]:=B; 5:ALT[1,5]:=B; 6:ALT[1,6]:=B; 7:ALT[1,7]:=B; 8:ALT[1,8]:=B; 9:ALT[1,9]:=B; 10:ALT[2,1]:=B; 11:ALT[2,2]:=B; 12:ALT[2,3]:=B; 13:ALT[2,4]:=B; 14:ALT[2,5]:=B; 15:ALT[2,6]:=B; 16:ALT[2,7]:=B; 17:ALT[2,8]:=B; 18:ALT[2,9]:=B; 19:ALT[3,1]:=B; 20:ALT[3,2]:=B; 21:ALT[3,3]:=B; 22:ALT[3,4]:=B; 23:ALT[3,5]:=B; 24:ALT[3,6]:=B; 25:ALT[3,7]:=B; 26:ALT[3,8]:=B; 27:ALT[3,9]:=B; 28:ALT[4,1]:=B; 29:ALT[4,2]:=B; 30:ALT[4,3]:=B END END; PROCEDURE SPIELSTANDAUSGEBEN; VAR I,J :INTEGER; BEGIN WRITELN ; WRITELN ; WRITELN; FOR I:=1 TO MAX1 DO BEGIN FOR J:=1 TO MAX1 DO WRITE (ALT[I,J]:1); WRITELN END END; PROCEDURE EINUNDSECHZIGBISENDE; BEGIN CASE WAHL OF 61:ALT[7,7]:=B; 62:ALT[7,8]:=B; 63:ALT[7,9]:=B; 64:ALT[8,1]:=B; 65:ALT[8,2]:=B; 66:ALT[8,3]:=B; 67:ALT[8,4]:=B; 68:ALT[8,5]:=B; 69:ALT[8,6]:=B; 70:ALT[8,7]:=B; 71:ALT[8,8]:=B; 72:ALT[8,9]:=B; 73:ALT[9,1]:=B; 74:ALT[9,2]:=B; 75:ALT[9,3]:=B; 76:ALT[9,4]:=B; 77:ALT[9,5]:=B; 78:ALT[9,6]:=B; 79:ALT[9,7]:=B; 80:ALT[9,8]:=B; 81:ALT[9,9]:=B END END; PROCEDURE ZWEIUNDDREISSIGBISSECHZIG; BEGIN CASE WAHL OF 31:ALT[4,4]:=B; 32:ALT[4,5]:=B; 33:ALT[4,6]:=B; 34:ALT[4,7]:=B; 35:ALT[4,8]:=B; 36:ALT[4,9]:=B; 37:ALT[5,1]:=B; 38:ALT[5,2]:=B; 39:ALT[5,3]:=B; 40:ALT[5,4]:=B; 41:ALT[5,5]:=B; 42:ALT[5,6]:=B; 43:ALT[5,7]:=B; 44:ALT[5,8]:=B; 45:ALT[5,9]:=B; 46:ALT[6,1]:=B; 47:ALT[6,2]:=B; 48:ALT[6,3]:=B; 49:ALT[6,4]:=B; 50:ALT[6,5]:=B; 51:ALT[6,6]:=B; 52:ALT[6,7]:=B; 53:ALT[6,8]:=B; 54:ALT[6,9]:=B; 55:ALT[7,1]:=B; 56:ALT[7,2]:=B; 57:ALT[7,3]:=B; 58:ALT[7,4]:=B; 59:ALT[7,5]:=B; 60:ALT[7,6]:=B END END; BEGIN(*HAUPTPROGRAMM BEGINNT HIER!!!*) WRITELN("WIVIELE GENERATIONEN SOLLEN GEDRUCKT WERDEN");READ(N);WRITELN; FOR ZEILE:=0 TO MAX2 DO FOR SPALTE:=0 TO MAX2 DO BEGIN ALT[ZEILE,SPALTE]:=F; NEU[ZEILE,SPALTE]:=F; END; WRITELN("WELCHE FELDER WOLLEN SIE BESETZEN?"); WRITELN("GEBEN SIE DIE CODENUMMER IN DEM GEWUENSCHTEN FELD EIN"); WRITELN("0=ENDE DER EINGABE-START DES SPIELS"); WRITELN(" | 1| 2| 3| 4| 5| 6| 7| 8| 9|"); WRITELN("-----------------------------"); WRITELN("1>01|02|03|04|05|06|07|08|09|"); WRITELN("2>10|11|12|13|14|15|16|17|18|"); WRITELN("3>19|20|21|22|23|24|25|26|27|"); WRITELN("4>28|29|30|31|32|33|34|35|36|"); WRITELN("5>37|38|39|40|41|42|43|44|45|"); WRITELN("6>46|47|48|49|50|51|52|53|54|"); WRITELN("7>55|56|57|58|59|60|61| 62|63|"); WRITELN("8>64|65|66|67|68|69|70|71|72|"); WRITELN("9>73|74|75|76|77|78|79|80|81|"); WRITELN;WRITELN;WRITELN; REPEAT BEGIN READ(WAHL); IF (WAHL>=1)AND(WAHL<=30) THEN EINSBISDREISSIG; IF (WAHL>=31)AND(WAHL<=60) THEN ZWEIUNDDREISSIGBISSECHZIG; IF (WAHL>=61)AND(WAHL<=81) THEN EINUNDSECHZIGBISENDE END UNTIL WAHL=0; WRITELN; WRITELN; WRITELN; ANTWORT:=0; WRITE("GENERATION:",ANTWORT); SPIELSTANDAUSGEBEN; REPEAT BEGIN BESETSTENACHBARNZAELEN; ANTWORT:=ANTWORT+1;WRITE("GENERATION:",ANTWORT); FOR I:=1 TO MAX1 DO FOR J:=1 TO MAX1 DO IF ALT[I,J]=F THEN IF ZAELER[I,J]=3 THEN NEU[I,J]:=B ELSE NEU[I,J]:=F ELSE IF(ZAELER[I,J]<2) OR (ZAELER[I,J]>3) THEN NEU[I,J]:=F ELSE NEU[I,J]:=B; ALT:=NEU ; SPIELSTANDAUSGEBEN ;WRITELN;WRITELN;WRITELN;END; UNTIL ANTWORT=N END.