Utilises Ascii escape codes to display Living Cells by coordinate in a Semi Random Color
Option to save randomly Generated patterns in self loading batch files
Option to download or use BG.exe version 3.9 to enhance animation using Hide cursor option and Font size Selection
- Uses 'Where' to search your User Profile for any copy of BG.exe to take advantage of these functions, If you have an older version of BG.exe in your user profile, it may not work as intended.
Can be called with the command line with Custom Parameters for width, Height and Density
Code: Select all
@ECHO OFF & Setlocal EnableDelayedExpansion
TITLE Game of Life
Set "SaveDir=%TEMP%\CGOL_Data"
IF not exist "%SaveDir%" MD "%SaveDir%"
::: { Optional utility to improve animation: BG.exe Ver 3.9 SE by Carlos Montiers Aguilera
::: - Download Link - https://github.com/carlos-montiers/consolesoft-mirror/releases
For /F "Delims=" %%0 in ('Where /R "%USERPROFILE%" BG.exe') Do Set "BG.Utility=%%~0"
IF Exist "%BG.Utility%" ("%BG.Utility%" Cursor 0)
::: }
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Build concept:
::: Nested array Pos[y,x] containing _O / _I (Alive / Dead) values
::: Calculate offset values for adjacent Cells. EG: Pos[1,3] (using For /L %%Y %%X values as starting point, and N E S W NE NW SE SW as offset Variables.)
::: If statements to test value of neighbour cells N,E,S,W,NE,NW,SE,SW and counter to indicate how many cells are _O / _I and update status accordingly
::: Use intermediary array variables - vPos[x,y] for the above to prevent values changing before all cells in current generation iterated over
::: Transfer value to real cell, then destroy value of virtual cell.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::: { Creates variable /AE = Ascii-27 escape code.
::: - http://www.dostips.com/forum/viewtopic.php?t=1733
::: - https://stackoverflow.com/a/34923514/12343998
::: /AE can be used with and without DelayedExpansion.
Setlocal
For /F "tokens=2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
Endlocal
Set "/AE=%%a"
)
::: }
::: { Custom Font. Recommended Size: 9
IF Exist "%BG.Utility%" (
If Not Defined F.Size (
Echo(%/AE%[32mSelect Font Size [0-9]:%/AE%[0m
For /F "Delims=" %%F in ('%__AppDir__%\Choice.exe /N /C:0123456789') Do Set "F.Size=%%F" & %BG.Utility% Font %%F) Else (%BG.Utility% Font !F.Size!)
)
)
::: }
If /I "%~1"=="load" Goto :Load_In
REM Time suffix for saving initial state
Set DateString=%Date:~4,10%
Set DateString=%DateString:/=%
Set Filetime=%Time::=_%
Set Filetime=%Filetime: =0%
Set Filetime=%DateString%_at%Filetime:~,-3%
REM Folder to save initial state in.
Set "SaveDir=%~dp0CGOL_Data"
IF not exist "%SaveDir%" (
MD "%SaveDir%"
PUSHD "%SaveDir%"
Goto :Dimensions
)
PUSHD "%SaveDir%"
IF Not "%~2"=="" (Goto :Dimensions)
IF Exist "%SaveDir%\*.bat" (
ECHO(%/AE%[33m && CLS
CHOICE /N /C yn /M "Load previous? N/Y"
If Errorlevel 2 (
CLS
Goto :Dimensions
)
) Else (Goto :Dimensions)
Explorer.exe "%SaveDir%"
:selectFile
Set /P "source=%/AE%[35m{%/AE%[36mSelect file: }%/AE%[33m<%/AE%[37m"
IF exist "!source!" (
FOR /F "delims=" %%L in ("!source!") DO (Start "" "%%~L" & Exit)
) Else (Goto :selectFile)
:Dimensions
REM define grid dimensions. Batch can be called or started with parameters for Width and Hieght, and Density.
IF Not "%~2"=="" (
Set /A width=%~1,hieght=%~2
Goto :Populate
) Else (
Set /P width=%/AE%[35m{%/AE%[36mWidth %/AE%[34m[%/AE%[33m30 %/AE%[34m~ %/AE%[33m125%/AE%[34m]%/AE%[37m
Set /P hieght=%/AE%[35m{%/AE%[36mHieght %/AE%[34m[%/AE%[33m15 %/AE%[34m~ %/AE%[33m40%/AE%[34m]%/AE%[37m
)
For /L %%A IN (30,1,125) Do (IF "!width!"=="%%A" (For /L %%B IN (15,1,40) Do (IF "!hieght!"=="%%B" (Goto :Populate))))
ECHO(%/AE%[31mInvalid Dimensions.
Goto :Dimensions
:Populate
REM populate grid array with _I cells
For /L %%Y In (1,1,!hieght!) Do (
For /L %%X In (1,1,!width!) Do (
Set "Pos[%%Y_%%X]=_I"
)
)
REM randomly populate grid array with living cells. Density can be selected using a 3rd parameter when calling the batch.
IF Not "%~3"=="" (
For /L %%Y In (1,1,!hieght!) Do (
For /L %%X In (1,1,!width!) Do (
Set /A "density=!random! %%%~3 + 1"
If "!density!"=="2" (Set "Pos[%%Y_%%X]=_O")
)
)
) Else (
For /L %%Y In (1,1,!hieght!) Do (
For /L %%X In (1,1,!width!) Do (
Set /A "density=!random! %%9 + 1"
If "!density!"=="2" (Set "Pos[%%Y_%%X]=_O")
)
)
)
REM Option to store the initial state.
CHOICE /N /C ny /M "Save Initial State? N/Y"
If Errorlevel 2 (
ECHO(%/AE%[36mSaving...%/AE%[0m
>"CGOLfile%Filetime%.bat" (
ECHO(@Echo OFF
ECHO(Set "width=!width!"
ECHO(Set "hieght=!hieght!"
ECHO(Set "F.Size=!F.Size!"
For /L %%Y in (1,1,!hieght!) DO For /L %%X in (1,1,!width!) Do (ECHO.Set "Pos[%%Y_%%X]=!Pos[%%Y_%%X]!")
Echo(CD ..
Echo(%~n0 Load
)
)
:Load_In
REM define display characteristics of _O (living) or _I (dead) cells
Set /A Color=!random! %%7 + 31
Set "_I=%/AE%[31m%/AE%[7m+%/AE%[0m"
REM Set "_O=%/AE%[!Color!m%/AE%[7m %/AE%[0m"
Set tick=0
REM Adjust display size, extra line for cursor overflow.
Set /A hieght+=1
Mode Con: cols=%width% lines=%hieght%
Set /A hieght-=1
(For /L %%Y In (1,1,!hieght!) Do (
For /L %%X In (1,1,!width!) Do (
For %%A in (!Pos[%%Y_%%X]!) DO (Echo(%/AE%[%%Y;%%XH!_I!)
)
))>"%SaveDir%\BGScreen.txt"
Set /A Color=!random! %%4 + 34
(For /F "USEBACKQ Tokens=1,2 Delims==" %%A in (`"Set Pos["`) Do (
Set ".Y=%%~A"
Set ".Y=!.Y:Pos[=!"
Set ".X=!.Y:*_=!"
Set ".X=!.X:]=!"
For %%V in (_!.X!]) Do Set ".Y=!.Y:%%V=!"
If /I "%%~B" == "_O" (Set /A Color=!random! %%4 + 34 & Echo.%/AE%[!.Y!;!.X!H%/AE%[!Color!m%/AE%[7m@%/AE%[0m)
))>"%SaveDir%\Screen.txt"
TYPE "%SaveDir%\BGScreen.txt"
TYPE "%SaveDir%\Screen.txt"
REM loop to cycle through generations (otherwise known as ticks)
For /L %%. in () Do (
Set /A tick+=1
TITLE !TIME:~3,8! !tick!
REM determine _O / _I status for each cells next generation and assign to virtual cells ready for transfer.
For /L %%Y In (1,1,!hieght!) Do (
For /L %%X In (1,1,!width!) Do (
REM calculate positions of nieghbour cells and reset living neighbour count
Set /A N=%%Y,E=%%X,S=%%Y,W=%%X,B_North=0,B_South=!hieght!,B_East=!width!,B_West=0
Set /A N-=1,E+=1,S+=1,W-=1,B_East+=1,B_South+=1,Count=0
REM horizontal, vertical and diagonal Screen Wrapping. REM prior to below If conditions Disables wrapping.
REM IF "!N!"=="!B_North!" Set N=!hieght!
REM IF "!E!"=="!B_East!" Set E=1
REM IF "!S!"=="!B_South!" Set S=1
REM IF "!W!"=="!B_West!" Set W=!width!
Set "NE=!N!_!E!"
Set "NW=!N!_!W!"
Set "SE=!S!_!E!"
Set "SW=!S!_!W!"
Set "N=!N!_%%X"
Set "E=%%Y_!E!"
Set "S=!S!_%%X"
Set "W=%%Y_!W!"
REM iterate over each neighbour cell and increment count for each live neighbour
For %%A in (Pos[!N!],Pos[!E!],Pos[!S!],Pos[!W!],Pos[!NE!],Pos[!NW!],Pos[!SE!],Pos[!SW!]) Do IF /I "!%%~A!"=="_O" (Set /A count+=1)
REM Game rule implementation
REM Any cell not meeting the following two critea dies.
Set "vPos[%%Y_%%X]=_I"
REM A living Cell with exactly two living neighbours survives
IF "!count!"=="2" (IF /I "!Pos[%%Y_%%X]!"=="_O" (Set vPos[%%Y_%%X]=_O))
REM Any cell with exactly three living neighbours is concieved / survives.
IF "!count!"=="3" (Set vPos[%%Y_%%X]=_O)
)
)
REM Build Foreground screen to display current living generation, Transfer array values and 'Undefine' Calculation array variables
(For /F "USEBACKQ Tokens=1,2 Delims==" %%A in (`"Set vPos["`) Do (
Set ".Y=%%~A" & Set %%~A=
Set ".Y=!.Y:vPos[=!"
Set ".X=!.Y:*_=!"
Set ".X=!.X:]=!"
For %%V in (_!.X!]) Do Set ".Y=!.Y:%%V=!"
Set "Pos[!.Y!_!.X!]=%%~B"
If /I "%%~B" == "_O" (Set /A Color=!random! %%4 + 34 & Echo.%/AE%[!.Y!;!.X!H%/AE%[!Color!m%/AE%[7m@%/AE%[0m)
))>"%SaveDir%\Screen.txt"
TYPE "%SaveDir%\BGScreen.txt"
TYPE "%SaveDir%\Screen.txt"
)
An example of a pattern File:
Code: Select all
@Echo OFF
Set "width=30"
Set "hieght=20"
Set "F.Size=9"
Set "Pos[1_1]=_I"
Set "Pos[1_2]=_I"
Set "Pos[1_3]=_I"
Set "Pos[1_4]=_I"
Set "Pos[1_5]=_I"
Set "Pos[1_6]=_I"
Set "Pos[1_7]=_I"
Set "Pos[1_8]=_I"
Set "Pos[1_9]=_I"
Set "Pos[1_10]=_I"
Set "Pos[1_11]=_I"
Set "Pos[1_12]=_I"
Set "Pos[1_13]=_I"
Set "Pos[1_14]=_I"
Set "Pos[1_15]=_I"
Set "Pos[1_16]=_I"
Set "Pos[1_17]=_I"
Set "Pos[1_18]=_I"
Set "Pos[1_19]=_I"
Set "Pos[1_20]=_I"
Set "Pos[1_21]=_I"
Set "Pos[1_22]=_I"
Set "Pos[1_23]=_I"
Set "Pos[1_24]=_I"
Set "Pos[1_25]=_I"
Set "Pos[1_26]=_I"
Set "Pos[1_27]=_I"
Set "Pos[1_28]=_I"
Set "Pos[1_29]=_I"
Set "Pos[1_30]=_I"
Set "Pos[2_1]=_I"
Set "Pos[2_2]=_I"
Set "Pos[2_3]=_I"
Set "Pos[2_4]=_I"
Set "Pos[2_5]=_I"
Set "Pos[2_6]=_I"
Set "Pos[2_7]=_I"
Set "Pos[2_8]=_I"
Set "Pos[2_9]=_I"
Set "Pos[2_10]=_I"
Set "Pos[2_11]=_I"
Set "Pos[2_12]=_I"
Set "Pos[2_13]=_I"
Set "Pos[2_14]=_I"
Set "Pos[2_15]=_I"
Set "Pos[2_16]=_I"
Set "Pos[2_17]=_I"
Set "Pos[2_18]=_I"
Set "Pos[2_19]=_I"
Set "Pos[2_20]=_I"
Set "Pos[2_21]=_I"
Set "Pos[2_22]=_I"
Set "Pos[2_23]=_I"
Set "Pos[2_24]=_I"
Set "Pos[2_25]=_I"
Set "Pos[2_26]=_I"
Set "Pos[2_27]=_I"
Set "Pos[2_28]=_I"
Set "Pos[2_29]=_I"
Set "Pos[2_30]=_I"
Set "Pos[3_1]=_I"
Set "Pos[3_2]=_I"
Set "Pos[3_3]=_I"
Set "Pos[3_4]=_I"
Set "Pos[3_5]=_I"
Set "Pos[3_6]=_I"
Set "Pos[3_7]=_I"
Set "Pos[3_8]=_I"
Set "Pos[3_9]=_I"
Set "Pos[3_10]=_I"
Set "Pos[3_11]=_I"
Set "Pos[3_12]=_I"
Set "Pos[3_13]=_I"
Set "Pos[3_14]=_I"
Set "Pos[3_15]=_I"
Set "Pos[3_16]=_I"
Set "Pos[3_17]=_I"
Set "Pos[3_18]=_I"
Set "Pos[3_19]=_I"
Set "Pos[3_20]=_I"
Set "Pos[3_21]=_I"
Set "Pos[3_22]=_I"
Set "Pos[3_23]=_I"
Set "Pos[3_24]=_I"
Set "Pos[3_25]=_I"
Set "Pos[3_26]=_I"
Set "Pos[3_27]=_I"
Set "Pos[3_28]=_I"
Set "Pos[3_29]=_I"
Set "Pos[3_30]=_I"
Set "Pos[4_1]=_I"
Set "Pos[4_2]=_I"
Set "Pos[4_3]=_I"
Set "Pos[4_4]=_I"
Set "Pos[4_5]=_I"
Set "Pos[4_6]=_I"
Set "Pos[4_7]=_I"
Set "Pos[4_8]=_I"
Set "Pos[4_9]=_I"
Set "Pos[4_10]=_I"
Set "Pos[4_11]=_I"
Set "Pos[4_12]=_I"
Set "Pos[4_13]=_I"
Set "Pos[4_14]=_I"
Set "Pos[4_15]=_I"
Set "Pos[4_16]=_I"
Set "Pos[4_17]=_I"
Set "Pos[4_18]=_I"
Set "Pos[4_19]=_I"
Set "Pos[4_20]=_I"
Set "Pos[4_21]=_I"
Set "Pos[4_22]=_I"
Set "Pos[4_23]=_I"
Set "Pos[4_24]=_I"
Set "Pos[4_25]=_I"
Set "Pos[4_26]=_I"
Set "Pos[4_27]=_I"
Set "Pos[4_28]=_I"
Set "Pos[4_29]=_I"
Set "Pos[4_30]=_I"
Set "Pos[5_1]=_I"
Set "Pos[5_2]=_I"
Set "Pos[5_3]=_I"
Set "Pos[5_4]=_I"
Set "Pos[5_5]=_I"
Set "Pos[5_6]=_I"
Set "Pos[5_7]=_I"
Set "Pos[5_8]=_I"
Set "Pos[5_9]=_I"
Set "Pos[5_10]=_I"
Set "Pos[5_11]=_I"
Set "Pos[5_12]=_I"
Set "Pos[5_13]=_I"
Set "Pos[5_14]=_I"
Set "Pos[5_15]=_I"
Set "Pos[5_16]=_I"
Set "Pos[5_17]=_I"
Set "Pos[5_18]=_I"
Set "Pos[5_19]=_I"
Set "Pos[5_20]=_I"
Set "Pos[5_21]=_I"
Set "Pos[5_22]=_I"
Set "Pos[5_23]=_I"
Set "Pos[5_24]=_I"
Set "Pos[5_25]=_I"
Set "Pos[5_26]=_I"
Set "Pos[5_27]=_I"
Set "Pos[5_28]=_I"
Set "Pos[5_29]=_I"
Set "Pos[5_30]=_I"
Set "Pos[6_1]=_I"
Set "Pos[6_2]=_I"
Set "Pos[6_3]=_I"
Set "Pos[6_4]=_I"
Set "Pos[6_5]=_I"
Set "Pos[6_6]=_I"
Set "Pos[6_7]=_I"
Set "Pos[6_8]=_I"
Set "Pos[6_9]=_I"
Set "Pos[6_10]=_I"
Set "Pos[6_11]=_I"
Set "Pos[6_12]=_I"
Set "Pos[6_13]=_I"
Set "Pos[6_14]=_I"
Set "Pos[6_15]=_I"
Set "Pos[6_16]=_I"
Set "Pos[6_17]=_I"
Set "Pos[6_18]=_I"
Set "Pos[6_19]=_I"
Set "Pos[6_20]=_I"
Set "Pos[6_21]=_I"
Set "Pos[6_22]=_I"
Set "Pos[6_23]=_I"
Set "Pos[6_24]=_I"
Set "Pos[6_25]=_I"
Set "Pos[6_26]=_I"
Set "Pos[6_27]=_I"
Set "Pos[6_28]=_I"
Set "Pos[6_29]=_I"
Set "Pos[6_30]=_I"
Set "Pos[7_1]=_I"
Set "Pos[7_2]=_I"
Set "Pos[7_3]=_I"
Set "Pos[7_4]=_I"
Set "Pos[7_5]=_I"
Set "Pos[7_6]=_I"
Set "Pos[7_7]=_I"
Set "Pos[7_8]=_I"
Set "Pos[7_9]=_I"
Set "Pos[7_10]=_I"
Set "Pos[7_11]=_I"
Set "Pos[7_12]=_I"
Set "Pos[7_13]=_I"
Set "Pos[7_14]=_I"
Set "Pos[7_15]=_I"
Set "Pos[7_16]=_I"
Set "Pos[7_17]=_I"
Set "Pos[7_18]=_I"
Set "Pos[7_19]=_I"
Set "Pos[7_20]=_I"
Set "Pos[7_21]=_I"
Set "Pos[7_22]=_I"
Set "Pos[7_23]=_I"
Set "Pos[7_24]=_I"
Set "Pos[7_25]=_I"
Set "Pos[7_26]=_I"
Set "Pos[7_27]=_I"
Set "Pos[7_28]=_I"
Set "Pos[7_29]=_I"
Set "Pos[7_30]=_I"
Set "Pos[8_1]=_I"
Set "Pos[8_2]=_I"
Set "Pos[8_3]=_I"
Set "Pos[8_4]=_I"
Set "Pos[8_5]=_I"
Set "Pos[8_6]=_I"
Set "Pos[8_7]=_I"
Set "Pos[8_8]=_I"
Set "Pos[8_9]=_I"
Set "Pos[8_10]=_I"
Set "Pos[8_11]=_I"
Set "Pos[8_12]=_I"
Set "Pos[8_13]=_I"
Set "Pos[8_14]=_I"
Set "Pos[8_15]=_I"
Set "Pos[8_16]=_I"
Set "Pos[8_17]=_I"
Set "Pos[8_18]=_I"
Set "Pos[8_19]=_I"
Set "Pos[8_20]=_I"
Set "Pos[8_21]=_I"
Set "Pos[8_22]=_I"
Set "Pos[8_23]=_I"
Set "Pos[8_24]=_I"
Set "Pos[8_25]=_I"
Set "Pos[8_26]=_I"
Set "Pos[8_27]=_I"
Set "Pos[8_28]=_I"
Set "Pos[8_29]=_I"
Set "Pos[8_30]=_I"
Set "Pos[9_1]=_I"
Set "Pos[9_2]=_I"
Set "Pos[9_3]=_I"
Set "Pos[9_4]=_I"
Set "Pos[9_5]=_I"
Set "Pos[9_6]=_I"
Set "Pos[9_7]=_I"
Set "Pos[9_8]=_I"
Set "Pos[9_9]=_I"
Set "Pos[9_10]=_I"
Set "Pos[9_11]=_I"
Set "Pos[9_12]=_I"
Set "Pos[9_13]=_I"
Set "Pos[9_14]=_I"
Set "Pos[9_15]=_O"
Set "Pos[9_16]=_I"
Set "Pos[9_17]=_I"
Set "Pos[9_18]=_I"
Set "Pos[9_19]=_I"
Set "Pos[9_20]=_I"
Set "Pos[9_21]=_I"
Set "Pos[9_22]=_I"
Set "Pos[9_23]=_I"
Set "Pos[9_24]=_I"
Set "Pos[9_25]=_I"
Set "Pos[9_26]=_I"
Set "Pos[9_27]=_I"
Set "Pos[9_28]=_I"
Set "Pos[9_29]=_I"
Set "Pos[9_30]=_I"
Set "Pos[10_1]=_I"
Set "Pos[10_2]=_I"
Set "Pos[10_3]=_I"
Set "Pos[10_4]=_I"
Set "Pos[10_5]=_O"
Set "Pos[10_6]=_O"
Set "Pos[10_7]=_O"
Set "Pos[10_8]=_I"
Set "Pos[10_9]=_I"
Set "Pos[10_10]=_I"
Set "Pos[10_11]=_I"
Set "Pos[10_12]=_I"
Set "Pos[10_13]=_I"
Set "Pos[10_14]=_O"
Set "Pos[10_15]=_O"
Set "Pos[10_16]=_O"
Set "Pos[10_17]=_I"
Set "Pos[10_18]=_I"
Set "Pos[10_19]=_I"
Set "Pos[10_20]=_I"
Set "Pos[10_21]=_I"
Set "Pos[10_22]=_I"
Set "Pos[10_23]=_O"
Set "Pos[10_24]=_O"
Set "Pos[10_25]=_O"
Set "Pos[10_26]=_I"
Set "Pos[10_27]=_I"
Set "Pos[10_28]=_I"
Set "Pos[10_29]=_I"
Set "Pos[10_30]=_I"
Set "Pos[11_1]=_I"
Set "Pos[11_2]=_I"
Set "Pos[11_3]=_I"
Set "Pos[11_4]=_I"
Set "Pos[11_5]=_I"
Set "Pos[11_6]=_O"
Set "Pos[11_7]=_I"
Set "Pos[11_8]=_I"
Set "Pos[11_9]=_I"
Set "Pos[11_10]=_I"
Set "Pos[11_11]=_I"
Set "Pos[11_12]=_I"
Set "Pos[11_13]=_I"
Set "Pos[11_14]=_I"
Set "Pos[11_15]=_I"
Set "Pos[11_16]=_I"
Set "Pos[11_17]=_I"
Set "Pos[11_18]=_I"
Set "Pos[11_19]=_I"
Set "Pos[11_20]=_I"
Set "Pos[11_21]=_I"
Set "Pos[11_22]=_I"
Set "Pos[11_23]=_I"
Set "Pos[11_24]=_O"
Set "Pos[11_25]=_I"
Set "Pos[11_26]=_I"
Set "Pos[11_27]=_I"
Set "Pos[11_28]=_I"
Set "Pos[11_29]=_I"
Set "Pos[11_30]=_I"
Set "Pos[12_1]=_I"
Set "Pos[12_2]=_I"
Set "Pos[12_3]=_I"
Set "Pos[12_4]=_I"
Set "Pos[12_5]=_I"
Set "Pos[12_6]=_I"
Set "Pos[12_7]=_I"
Set "Pos[12_8]=_I"
Set "Pos[12_9]=_I"
Set "Pos[12_10]=_I"
Set "Pos[12_11]=_I"
Set "Pos[12_12]=_I"
Set "Pos[12_13]=_I"
Set "Pos[12_14]=_I"
Set "Pos[12_15]=_I"
Set "Pos[12_16]=_I"
Set "Pos[12_17]=_I"
Set "Pos[12_18]=_I"
Set "Pos[12_19]=_I"
Set "Pos[12_20]=_I"
Set "Pos[12_21]=_I"
Set "Pos[12_22]=_I"
Set "Pos[12_23]=_I"
Set "Pos[12_24]=_I"
Set "Pos[12_25]=_I"
Set "Pos[12_26]=_I"
Set "Pos[12_27]=_I"
Set "Pos[12_28]=_I"
Set "Pos[12_29]=_I"
Set "Pos[12_30]=_I"
Set "Pos[13_1]=_I"
Set "Pos[13_2]=_I"
Set "Pos[13_3]=_I"
Set "Pos[13_4]=_I"
Set "Pos[13_5]=_I"
Set "Pos[13_6]=_I"
Set "Pos[13_7]=_I"
Set "Pos[13_8]=_I"
Set "Pos[13_9]=_I"
Set "Pos[13_10]=_I"
Set "Pos[13_11]=_I"
Set "Pos[13_12]=_I"
Set "Pos[13_13]=_I"
Set "Pos[13_14]=_I"
Set "Pos[13_15]=_I"
Set "Pos[13_16]=_I"
Set "Pos[13_17]=_I"
Set "Pos[13_18]=_I"
Set "Pos[13_19]=_I"
Set "Pos[13_20]=_I"
Set "Pos[13_21]=_I"
Set "Pos[13_22]=_I"
Set "Pos[13_23]=_I"
Set "Pos[13_24]=_I"
Set "Pos[13_25]=_I"
Set "Pos[13_26]=_I"
Set "Pos[13_27]=_I"
Set "Pos[13_28]=_I"
Set "Pos[13_29]=_I"
Set "Pos[13_30]=_I"
Set "Pos[14_1]=_I"
Set "Pos[14_2]=_I"
Set "Pos[14_3]=_I"
Set "Pos[14_4]=_I"
Set "Pos[14_5]=_I"
Set "Pos[14_6]=_I"
Set "Pos[14_7]=_I"
Set "Pos[14_8]=_I"
Set "Pos[14_9]=_I"
Set "Pos[14_10]=_I"
Set "Pos[14_11]=_I"
Set "Pos[14_12]=_I"
Set "Pos[14_13]=_I"
Set "Pos[14_14]=_I"
Set "Pos[14_15]=_I"
Set "Pos[14_16]=_I"
Set "Pos[14_17]=_I"
Set "Pos[14_18]=_I"
Set "Pos[14_19]=_I"
Set "Pos[14_20]=_I"
Set "Pos[14_21]=_I"
Set "Pos[14_22]=_I"
Set "Pos[14_23]=_I"
Set "Pos[14_24]=_I"
Set "Pos[14_25]=_I"
Set "Pos[14_26]=_I"
Set "Pos[14_27]=_I"
Set "Pos[14_28]=_I"
Set "Pos[14_29]=_I"
Set "Pos[14_30]=_I"
Set "Pos[15_1]=_I"
Set "Pos[15_2]=_I"
Set "Pos[15_3]=_I"
Set "Pos[15_4]=_I"
Set "Pos[15_5]=_I"
Set "Pos[15_6]=_I"
Set "Pos[15_7]=_I"
Set "Pos[15_8]=_I"
Set "Pos[15_9]=_I"
Set "Pos[15_10]=_I"
Set "Pos[15_11]=_I"
Set "Pos[15_12]=_I"
Set "Pos[15_13]=_I"
Set "Pos[15_14]=_I"
Set "Pos[15_15]=_I"
Set "Pos[15_16]=_I"
Set "Pos[15_17]=_I"
Set "Pos[15_18]=_I"
Set "Pos[15_19]=_I"
Set "Pos[15_20]=_I"
Set "Pos[15_21]=_I"
Set "Pos[15_22]=_I"
Set "Pos[15_23]=_I"
Set "Pos[15_24]=_I"
Set "Pos[15_25]=_I"
Set "Pos[15_26]=_I"
Set "Pos[15_27]=_I"
Set "Pos[15_28]=_I"
Set "Pos[15_29]=_I"
Set "Pos[15_30]=_I"
Set "Pos[16_1]=_I"
Set "Pos[16_2]=_I"
Set "Pos[16_3]=_I"
Set "Pos[16_4]=_I"
Set "Pos[16_5]=_I"
Set "Pos[16_6]=_I"
Set "Pos[16_7]=_I"
Set "Pos[16_8]=_I"
Set "Pos[16_9]=_I"
Set "Pos[16_10]=_I"
Set "Pos[16_11]=_I"
Set "Pos[16_12]=_I"
Set "Pos[16_13]=_I"
Set "Pos[16_14]=_I"
Set "Pos[16_15]=_I"
Set "Pos[16_16]=_I"
Set "Pos[16_17]=_I"
Set "Pos[16_18]=_I"
Set "Pos[16_19]=_I"
Set "Pos[16_20]=_I"
Set "Pos[16_21]=_I"
Set "Pos[16_22]=_I"
Set "Pos[16_23]=_I"
Set "Pos[16_24]=_I"
Set "Pos[16_25]=_I"
Set "Pos[16_26]=_I"
Set "Pos[16_27]=_I"
Set "Pos[16_28]=_I"
Set "Pos[16_29]=_I"
Set "Pos[16_30]=_I"
Set "Pos[17_1]=_I"
Set "Pos[17_2]=_I"
Set "Pos[17_3]=_I"
Set "Pos[17_4]=_I"
Set "Pos[17_5]=_I"
Set "Pos[17_6]=_I"
Set "Pos[17_7]=_I"
Set "Pos[17_8]=_I"
Set "Pos[17_9]=_I"
Set "Pos[17_10]=_I"
Set "Pos[17_11]=_I"
Set "Pos[17_12]=_I"
Set "Pos[17_13]=_I"
Set "Pos[17_14]=_I"
Set "Pos[17_15]=_I"
Set "Pos[17_16]=_I"
Set "Pos[17_17]=_I"
Set "Pos[17_18]=_I"
Set "Pos[17_19]=_I"
Set "Pos[17_20]=_I"
Set "Pos[17_21]=_I"
Set "Pos[17_22]=_I"
Set "Pos[17_23]=_I"
Set "Pos[17_24]=_I"
Set "Pos[17_25]=_I"
Set "Pos[17_26]=_I"
Set "Pos[17_27]=_I"
Set "Pos[17_28]=_I"
Set "Pos[17_29]=_I"
Set "Pos[17_30]=_I"
Set "Pos[18_1]=_I"
Set "Pos[18_2]=_I"
Set "Pos[18_3]=_I"
Set "Pos[18_4]=_I"
Set "Pos[18_5]=_I"
Set "Pos[18_6]=_I"
Set "Pos[18_7]=_I"
Set "Pos[18_8]=_I"
Set "Pos[18_9]=_I"
Set "Pos[18_10]=_I"
Set "Pos[18_11]=_I"
Set "Pos[18_12]=_I"
Set "Pos[18_13]=_I"
Set "Pos[18_14]=_I"
Set "Pos[18_15]=_I"
Set "Pos[18_16]=_I"
Set "Pos[18_17]=_I"
Set "Pos[18_18]=_I"
Set "Pos[18_19]=_I"
Set "Pos[18_20]=_I"
Set "Pos[18_21]=_I"
Set "Pos[18_22]=_I"
Set "Pos[18_23]=_I"
Set "Pos[18_24]=_I"
Set "Pos[18_25]=_I"
Set "Pos[18_26]=_I"
Set "Pos[18_27]=_I"
Set "Pos[18_28]=_I"
Set "Pos[18_29]=_I"
Set "Pos[18_30]=_I"
Set "Pos[19_1]=_I"
Set "Pos[19_2]=_I"
Set "Pos[19_3]=_I"
Set "Pos[19_4]=_I"
Set "Pos[19_5]=_I"
Set "Pos[19_6]=_I"
Set "Pos[19_7]=_I"
Set "Pos[19_8]=_I"
Set "Pos[19_9]=_I"
Set "Pos[19_10]=_I"
Set "Pos[19_11]=_I"
Set "Pos[19_12]=_I"
Set "Pos[19_13]=_I"
Set "Pos[19_14]=_I"
Set "Pos[19_15]=_I"
Set "Pos[19_16]=_I"
Set "Pos[19_17]=_I"
Set "Pos[19_18]=_I"
Set "Pos[19_19]=_I"
Set "Pos[19_20]=_I"
Set "Pos[19_21]=_I"
Set "Pos[19_22]=_I"
Set "Pos[19_23]=_I"
Set "Pos[19_24]=_I"
Set "Pos[19_25]=_I"
Set "Pos[19_26]=_I"
Set "Pos[19_27]=_I"
Set "Pos[19_28]=_I"
Set "Pos[19_29]=_I"
Set "Pos[19_30]=_I"
Set "Pos[20_1]=_I"
Set "Pos[20_2]=_I"
Set "Pos[20_3]=_I"
Set "Pos[20_4]=_I"
Set "Pos[20_5]=_I"
Set "Pos[20_6]=_I"
Set "Pos[20_7]=_I"
Set "Pos[20_8]=_I"
Set "Pos[20_9]=_I"
Set "Pos[20_10]=_I"
Set "Pos[20_11]=_I"
Set "Pos[20_12]=_I"
Set "Pos[20_13]=_I"
Set "Pos[20_14]=_I"
Set "Pos[20_15]=_I"
Set "Pos[20_16]=_I"
Set "Pos[20_17]=_I"
Set "Pos[20_18]=_I"
Set "Pos[20_19]=_I"
Set "Pos[20_20]=_I"
Set "Pos[20_21]=_I"
Set "Pos[20_22]=_I"
Set "Pos[20_23]=_I"
Set "Pos[20_24]=_I"
Set "Pos[20_25]=_I"
Set "Pos[20_26]=_I"
Set "Pos[20_27]=_I"
Set "Pos[20_28]=_I"
Set "Pos[20_29]=_I"
Set "Pos[20_30]=_I"
CD ..
GameOfLife Load