------------------------------------------------------------ REM 四角形内のライフゲーム OPTION BASE 0 LET n=20 DIM a(n+1,n+1),b(n+1,n+1) SET WINDOW -n/10,n+n/10,-n/10,n+n/10 FOR x=0 TO n PLOT LINES:x,0;x,n NEXT x FOR y=0 TO n PLOT LINES:0,y;n,y NEXT y GET POINT:x1,y1 DO WHILE x1>0 AND x10 AND y1=0 END ------------------------------------------------------------ ------------------------------------------------------------ REM ドーナツ面(TORUS)上のライフゲーム OPTION BASE 0 LET n=20 DIM a(n+1,n+1),b(n+1,n+1) SET WINDOW -n/10,n+n/10,-n/10,n+n/10 FOR x=0 TO n PLOT LINES:x,0;x,n NEXT x FOR y=0 TO n PLOT LINES:0,y;n,y NEXT y GET POINT:x1,y1 DO WHILE x1>0 AND x10 AND y1=0 END ------------------------------------------------------------ 以下、初期状態を乱数にて与える ------------------------------------------------------------ REM 四角形内のライフゲーム(初期状態を乱数にて与える) OPTION BASE 0 RANDOMIZE LET n=20 DIM a(n+1,n+1),b(n+1,n+1) SET WINDOW -n/10,n+n/10,-n/10,n+n/10 FOR x=0 TO n PLOT LINES:x,0;x,n NEXT x FOR y=0 TO n PLOT LINES:0,y;n,y NEXT y FOR k=1 TO INT(n^2/7) LET x=INT(RND*n)+1 LET y=INT(RND*n)+1 LET a(x,y)=1 SET AREA COLOR 1 DRAW disk WITH SCALE(0.4)*SHIFT(x-0.5,y-0.5) NEXT k WAIT DELAY 3 DO FOR x=1 TO n FOR y=1 TO n LET b(x,y)=a(x-1,y-1)+a(x,y-1)+a(x+1,y-1) & & +a(x-1,y)+a(x+1,y) & & +a(x-1,y+1)+a(x,y+1)+a(x+1,y+1) NEXT y NEXT x WAIT DELAY 0.1 FOR x=1 TO n FOR y=1 TO n IF b(x,y)=3 THEN LET a(x,y)=1 SET AREA COLOR 1 DRAW disk WITH SCALE(0.4)*SHIFT(x-0.5,y-0.5) ELSEIF b(x,y)=2 AND a(x,y)=1 THEN LET a(x,y)=1 SET AREA COLOR 1 DRAW disk WITH SCALE(0.4)*SHIFT(x-0.5,y-0.5) ELSE LET a(x,y)=0 SET AREA COLOR 0 DRAW disk WITH SCALE(0.4)*SHIFT(x-0.5,y-0.5) END IF NEXT y NEXT x MAT b=ZER LOOP WHILE GetKeyState(32)>=0 END ------------------------------------------------------------ ------------------------------------------------------------ REM ドーナツ面(TORUS)上のライフゲーム(初期状態を乱数にて与える) OPTION BASE 0 RANDOMIZE LET n=20 DIM a(n+1,n+1),b(n+1,n+1) SET WINDOW -n/10,n+n/10,-n/10,n+n/10 FOR x=0 TO n PLOT LINES:x,0;x,n NEXT x FOR y=0 TO n PLOT LINES:0,y;n,y NEXT y FOR k=1 TO INT(n^2/7) LET x=INT(RND*n)+1 LET y=INT(RND*n)+1 LET a(x,y)=1 SET AREA COLOR 1 DRAW disk WITH SCALE(0.4)*SHIFT(x-0.5,y-0.5) NEXT k WAIT DELAY 3 DO FOR y=0 TO n+1 LET a(0,y)=a(n,y) LET a(n+1,y)=a(1,y) NEXT y FOR x=0 TO n+1 LET a(x,0)=a(x,n) LET a(x,n+1)=a(x,1) NEXT x FOR x=1 TO n FOR y=1 TO n LET b(x,y)=a(x-1,y-1)+a(x,y-1)+a(x+1,y-1) & & +a(x-1,y)+a(x+1,y) & & +a(x-1,y+1)+a(x,y+1)+a(x+1,y+1) NEXT y NEXT x WAIT DELAY 0.1 FOR x=1 TO n FOR y=1 TO n IF b(x,y)=3 THEN LET a(x,y)=1 SET AREA COLOR 1 DRAW disk WITH SCALE(0.4)*SHIFT(x-0.5,y-0.5) ELSEIF b(x,y)=2 AND a(x,y)=1 THEN LET a(x,y)=1 SET AREA COLOR 1 DRAW disk WITH SCALE(0.4)*SHIFT(x-0.5,y-0.5) ELSE LET a(x,y)=0 SET AREA COLOR 0 DRAW disk WITH SCALE(0.4)*SHIFT(x-0.5,y-0.5) END IF NEXT y NEXT x MAT b=ZER LOOP WHILE GetKeyState(32)>=0 END ------------------------------------------------------------