1970年生まれの生命シミュレーション、「ライフゲーム」をプチコン上で再現したのがこのプログラムだ。
空白セル(死)に色つきセル(生)が3つ隣り合っていれば、そのセルは次の世代で色つきセルに変わる。色つきセルに2つか3つの色つきセルが隣り合っていれば、そのセルは次の世代でも色つきのまま生き残る。逆に隣り合った色つきセルが1つ以下か4つ以上ならば次の世代では空白セルに変わる。
このルールに従って次々変わる様子を楽しもう。
Odakaz
初めまして。Odakazという者です。
プチコンで、定番のライフゲームを作ってみましたので、投稿させていただきます。
- ’┌──────────────────────────┐
- ’│LIFEGAME 2011/03/09 Odakaz│
- ’└──────────────────────────┘
- ’フ゜ロク゛ラム ショキカ
- VISIBLE 0,1,1,0,0,0
- CLS:GCLS:BGPAGE 0
- CLEAR
- W=50:H=36:MAX_GEN=100:INI_R=0.4
- DIM W1(W+2,H+2), W2(W+2,H+2)
- GOSUB @SET_CHR
- GOSUB @INIT_BG
- ’メイン
- @MAINLOOP
- GOSUB @INIT_W
- FOR GEN=1 TO MAX_GEN
- GOSUB @DRAW
- GOSUB @CALCNEXT
- NEXT
- GOTO @MAINLOOP
- END
- ’フィールト゛ ショキカ
- @INIT_W
- FOR I=0 TO W+1
- FOR J=0 TO H+1
- W1(I,J)=0
- W2(I,J)=0
- NEXT
- NEXT
- FOR I=1 TO W*H*INI_R
- GOSUB @PUT_LIFE
- NEXT
- RETURN
- ’カサナラナイヨウニ ハイチ
- @PUT_LIFE
- X=1+RND(W):Y=1+RND(H)
- IF W1(X,Y)==1 GOTO @PUT_LIFE
- W1(X,Y)=1
- RETURN
- ’ヒ゛ョウカ゛
- @DRAW
- FOR I=1 TO W-1 STEP 2
- FOR J=1 TO H-1 STEP 2
- CHR_NO=1+W1(I,J)*8+W1(I+1,J)*4+W1(I,J+1)*2+W1(I+1,J+1)
- BGPUT 0,(I-1)/2+1,(J-1)/2+1,CHR_NO,0,0,0
- NEXT
- NEXT
- RETURN
- ’ツキ゛ノ セタ゛イヲ ケイサン
- @CALCNEXT
- FOR I=1 TO W
- FOR J=1 TO H
- C=0
- FOR K=I-1 TO I+1
- FOR L=J-1 TO J+1
- C=C+W1(K,L)
- NEXT
- NEXT
- C=C-W1(I,J)
- ’セイシ ハンテイ
- ON C GOSUB @DEATH,@DEATH,@KEEP,@LIVE,@DEATH,@DEATH,@DEATH,@DEATH,@DEATH
- NEXT
- NEXT
- GOSUB @FLIP
- RETURN
- ’シメツ
- @DEATH
- W2(I,J)=0
- RETURN
- ’タンシ゛ョウ
- @LIVE
- W2(I,J)=1
- RETURN
- ’ソノママ
- @KEEP
- W2(I,J)=W1(I,J)
- RETURN
- ’ツキ゛ノ セタ゛イヲ ハンエイ
- @FLIP
- FOR I=0 TO W+1
- FOR J=0 TO H+1
- W1(I,J)=W2(I,J)
- NEXT
- NEXT
- RETURN
- ’キャラノ セッテイ
- @SET_CHR
- COLSET ”BG”,0,”000000”
- COLSET ”BG”,1,”999999”
- COLSET ”BG”,2,”EEDD77”
- RESTORE @CELLCHR
- FOR I=1 TO 19
- READ CC$
- CHRSET ”BGU0”,I,CC$
- NEXT
- RETURN
- ’BGスクリーン ショキカ
- @INIT_BG
- FOR X=0 TO 32
- FOR Y=0 TO 23
- BGPUT 0,X,Y,0,0,0,0
- NEXT
- NEXT
- FOR X=1 TO W/2
- FOR Y=1 TO H/2
- BGPUT 0,X,Y,1,0,0,0
- NEXT
- NEXT
- FOR X=1 TO W/2
- BGPUT 0,X,H/2+1,17,0,0,0
- NEXT
- FOR Y=1 TO H/2
- BGPUT 0,W/2+1,Y,18,0,0,0
- NEXT
- BGPUT 0,W/2+1,H/2+1,19,0,0,0
- RETURN
- ’CELLノ ハ゜ターン
- @CELLCHR
- DATA ”1111111110001000100010001000100011111111100010001000100010001000”
- DATA ”1111111110001000100010001000100011111111100012221000122210001222”
- DATA ”1111111110001000100010001000100011111111122210001222100012221000”
- DATA ”1111111110001000100010001000100011111111122212221222122212221222”
- DATA ”1111111110001222100012221000122211111111100010001000100010001000”
- DATA ”1111111110001222100012221000122211111111100012221000122210001222”
- DATA ”1111111110001222100012221000122211111111122210001222100012221000”
- DATA ”1111111110001222100012221000122211111111122212221222122212221222”
- DATA ”1111111112221000122210001222100011111111100010001000100010001000”
- DATA ”1111111112221000122210001222100011111111100012221000122210001222”
- DATA ”1111111112221000122210001222100011111111122210001222100012221000”
- DATA ”1111111112221000122210001222100011111111122212221222122212221222”
- DATA ”1111111112221222122212221222122211111111100010001000100010001000”
- DATA ”1111111112221222122212221222122211111111100012221000122210001222”
- DATA ”1111111112221222122212221222122211111111122210001222100012221000”
- DATA ”1111111112221222122212221222122211111111122212221222122212221222”
- DATA ”1111111100000000000000000000000000000000000000000000000000000000”
- DATA ”1000000010000000100000001000000010000000100000001000000010000000”
- DATA ”1000000000000000000000000000000000000000000000000000000000000000”