nicoBasicで動くライフゲームです。
1 dim x1(8) 2 dim y1(8) 3 x1(0)=0:x1(1)= 1:x1(2)= 1:x1(3)= 1 4 x1(4)=0:x1(5)=-1:x1(6)=-1:x1(7)=-1 5 y1(0)=-1:y1(1)=-1:y1(2)=0:y1(3)= 1 6 y1(4)= 1:y1(5)= 1:y1(6)=0:y1(7)=-1 7 CLS 8 FOR I=0 TO 100 9 X= RND % 32 10 Y= RND % 16 11 PSET X,Y,1 12 NEXT 20 FOR Y=0 TO 15 21 FOR X=0 TO 31 22 D=0 23 FOR I=0 TO 7 24 IF POINT(X+x1(i),Y+y1(i)) THEN D=D+1 25 NEXT 26 C=0 33 IF D=2 THEN C=point(x,y) 35 IF D=3 THEN C=1 40 PSET X+40,Y,C 70 NEXT 80 NEXT 82 SCROLL 40,0 90 GOTO 20
▲プログラムです。
・隣接しているセルの数が2個だと現状維持、
・隣接しているセルの数が3個ならセルが誕生、
・それ以外の個数ならセルが死滅
としてみました。
うろ覚えなので、間違ってるかも。
セルの個数は配列と新しく作ったpoint関数を使って数えています。
配列には8つの方向の相対的な座標が入ってます。
point関数は指定した座標のvramを読み取るための関数です。
▲液晶画面で動いてる様子です。
動作速度がものすごい遅いです。32x16セルの画面を1つ更新するのに14秒くらいかかります。
▲秋月製電光掲示板モジュールで動いてる様子です。
▲前回の20080805版は「DIM」に対応させた副作用でバグが連発していましたので、今回の20080808版で対策しました。point関数を新しく追加してます。
あと、20080808版では実験的にフォントサイズを3x5に縮めてみました。これで5行表示ができます。読みにくいけど。