Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
70
Task/Wireworld/FreeBASIC/wireworld.basic
Normal file
70
Task/Wireworld/FreeBASIC/wireworld.basic
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
#define MAXX 319
|
||||
#define MAXY 199
|
||||
|
||||
enum state
|
||||
E=0, C=8, H=9, T=4 'doubles as colours: black, grey, bright blue, red
|
||||
end enum
|
||||
|
||||
dim as uinteger world(0 to 1, 0 to MAXX, 0 to MAXY), active = 0, buffer = 1
|
||||
dim as double rate = 1./3. 'seconds per frame
|
||||
dim as double tick
|
||||
dim as uinteger x, y
|
||||
|
||||
function turn_on( world() as unsigned integer, x as uinteger, y as uinteger, a as uinteger ) as boolean
|
||||
dim as ubyte n = 0
|
||||
dim as integer qx, qy
|
||||
for qx = -1 to 1
|
||||
for qy = -1 to 1
|
||||
if qx=0 andalso qy=0 then continue for
|
||||
if world(a,(x+qx+MAXX+1) mod (MAXX+1), (y+qy+MAXY+1) mod (MAXY+1))=H then n=n+1 'handles wrap-around
|
||||
next qy
|
||||
next qx
|
||||
if n=1 then return true
|
||||
if n=2 then return true
|
||||
return false
|
||||
end function
|
||||
|
||||
'generate sample map
|
||||
|
||||
for x=20 to 30
|
||||
world(active, x, 20) = C
|
||||
world(active, x, 24) = C
|
||||
next x
|
||||
world(active, 24, 24 ) = E
|
||||
world(active, 20, 21 ) = C
|
||||
world(active, 20, 23 ) = C
|
||||
world(active, 24, 21 ) = C
|
||||
world(active, 23, 22 ) = C
|
||||
world(active, 24, 22 ) = C
|
||||
world(active, 25, 22 ) = C
|
||||
world(active, 24, 23 ) = C
|
||||
world(active, 20, 20 ) = T
|
||||
world(active, 21, 20 ) = H
|
||||
world(active, 21, 24 ) = T
|
||||
world(active, 20, 24 ) = H
|
||||
|
||||
screen 12
|
||||
|
||||
do
|
||||
tick = timer
|
||||
for x = 0 to 319
|
||||
for y = 0 to 199
|
||||
pset (x,y), world(active, x, y)
|
||||
if world(active,x,y) = E then world(buffer,x,y) = E 'empty cells stay empty
|
||||
if world(active,x,y) = H then world(buffer,x,y) = T 'electron heads turn into electron tails
|
||||
if world(active,x,y) = T then world(buffer,x,y) = C 'electron tails revert to conductors
|
||||
if world(active,x,y) = C then
|
||||
if turn_on(world(),x,y,active) then
|
||||
world(buffer,x,y) = H 'maybe electron heads spread
|
||||
else
|
||||
world(buffer,x,y) = C 'otherwise condutor remains conductor
|
||||
end if
|
||||
end if
|
||||
next y
|
||||
next x
|
||||
while tick + rate > timer
|
||||
wend
|
||||
cls
|
||||
buffer = 1 - buffer
|
||||
active = 1 - buffer
|
||||
loop
|
||||
Loading…
Add table
Add a link
Reference in a new issue