43 lines
1.2 KiB
Text
43 lines
1.2 KiB
Text
#define SIZE 640
|
|
|
|
randomize timer
|
|
|
|
dim as ubyte arr(0 to SIZE-1, 0 to 1)
|
|
dim as uinteger i
|
|
for i = 0 to SIZE - 1 'initialise array with zeroes and ones
|
|
arr(i, 0)=int(rnd+0.5)
|
|
next i
|
|
|
|
screen 12 'display graphically
|
|
|
|
dim as string ch=" "
|
|
dim as uinteger j = 0, cur = 0, nxt, prv, neigh
|
|
while not ch = "q" or ch = "Q"
|
|
for i = 0 to SIZE - 1
|
|
pset(i, j), 8+7*arr(i,cur) 'print off cells as grey, on cells as bright white
|
|
nxt = (i + 1) mod SIZE
|
|
prv = (i - 1)
|
|
if prv < 0 then prv = SIZE - 1 'let's have a wrap-around array for fun
|
|
neigh = arr(prv, cur) + arr(nxt, cur)
|
|
if arr(i, cur) = 0 then 'evolution rules
|
|
if neigh = 2 then
|
|
arr(i, 1-cur) = 1
|
|
else
|
|
arr(i, 1-cur) = 0
|
|
end if
|
|
else
|
|
if neigh = 0 or neigh = 2 then
|
|
arr(i, 1-cur) = 0
|
|
else
|
|
arr(i, 1-cur) = 1
|
|
end if
|
|
end if
|
|
next i
|
|
j = j + 1
|
|
cur = 1 - cur
|
|
do
|
|
ch = inkey
|
|
if ch <> "" then exit do 'press any key to advance the sim
|
|
'or Q to exit
|
|
loop
|
|
wend
|