Version 2:
repeat : input "Play speed (1-25)?",speed : until speed > 0 and speed < 26
sync rate 60 : sync on : autocam off : color backdrop 0 : randomize timer() : box 0,0,128,128,rgb(255,0,0),rgb(255,0,0),rgb(255,0,0),rgb(255,0,0) : box 1,1,127,127,rgb(192,0,0),rgb(192,0,0),rgb(192,0,0),rgb(192,0,0) : box 2,2,126,126,rgb(128,0,0),rgb(128,0,0),rgb(128,0,0),rgb(128,0,0) : box 3,3,125,125,rgb(64,0,0),rgb(64,0,0),rgb(64,0,0),rgb(64,0,0) : box 4,4,124,124,0,0,0,0 : get image 1,0,0,128,128 : cls : dim electron(7,3) : for a=0 to 360 : for b=0 to 90 : dot 64+sin(a)*(sin(b)*64),64+cos(a)*(sin(b)*64),rgb(sin(90-b)*255,sin(90-b)*255,sin(90-b)*255) : next b : next a : get image 2,0,0,128,128 : cls : dim message$(8)
make object sphere 1,50,6,6 : texture object 1,1 : scale object texture 1,6,6
make object sphere 50,-250,50,50 : texture object 50,1 : scale object texture 50,50,25
for a=32 to 40 : make object plain a,3,3 : x=rnd(6)*60 : y=rnd(6)*60 : electron(a-32,0)=x*10 : electron(a-32,1)=y*10 : electron(a-32,2)=rnd(3) : position object a,sin(x)*(sin(y+90)*25),sin(y)*25,cos(x)*(sin(y+90)*25) : texture object a,2 : set object light a,0 : ghost object on a : next a
do
for a=32 to 40
if electron(a-32,2)=0 : inc electron(a-32,0) : electron(a-32,1) = int(electron(a-32,1)/60)*60 : endif : if electron(a-32,2)=1 : dec electron(a-32,0) : electron(a-32,1) = int(electron(a-32,1)/60)*60 : endif : if electron(a-32,2)=2 : inc electron(a-32,1) : electron(a-32,0) = int(electron(a-32,0)/60)*60 : endif : if electron(a-32,2)=3 : dec electron(a-32,1) : electron(a-32,0) = int(electron(a-32,0)/60)*60 : endif : position object a,sin(electron(a-32,0)*10)*(sin((electron(a-32,1)*10)+90)*25),sin(electron(a-32,1)*10)*25,cos(electron(a-32,0)*10)*(sin((electron(a-32,1)*10)+90)*25) : set object to camera orientation a
x# = wrapvalue(electron(a-32,0)) : y# = wrapvalue(electron(a-32,1)) : text 0,(a-32)*15,str$(x#) + " : " + str$(y#)
if x# = 0 : if y# = 0 : message$(a-32)="0" : electron(a-32,2)=rnd(3) : endif : if y# = 60 : message$(a-32)="1" : electron(a-32,2)=rnd(3) : endif : if y# = 120 : message$(a-32)="2" : electron(a-32,2)=rnd(3) : endif : if y# = 160 : message$(a-32)="3" : electron(a-32,2)=rnd(3) : endif : if y# = 240 : message$(a-32)="4" : electron(a-32,2)=rnd(3) : endif : if y# = 300 : message$(a-32)="5" : electron(a-32,2)=rnd(3) : endif : endif
if x# =60 : if y# = 0 : message$(a-32)="6" : electron(a-32,2)=rnd(3) : endif : if y# = 60 : message$(a-32)="7" : electron(a-32,2)=rnd(3) : endif : if y# = 120 : message$(a-32)="8" : electron(a-32,2)=rnd(3) : endif : if y# = 160 : message$(a-32)="9" : electron(a-32,2)=rnd(3) : endif : if y# = 240 : message$(a-32)="A" : electron(a-32,2)=rnd(3) : endif : if y# = 300 : message$(a-32)="B" : electron(a-32,2)=rnd(3) : endif : endif
if x# =120 : if y# = 0 : message$(a-32)="C" : electron(a-32,2)=rnd(3) : endif : if y# = 60 : message$(a-32)="D" : electron(a-32,2)=rnd(3) : endif : if y# = 120 : message$(a-32)="E" : electron(a-32,2)=rnd(3) : endif : if y# = 160 : message$(a-32)="F" : electron(a-32,2)=rnd(3) : endif : if y# = 240 : message$(a-32)="G" : electron(a-32,2)=rnd(3) : endif : if y# = 300 : message$(a-32)="H" : electron(a-32,2)=rnd(3) : endif : endif
if x# =160 : if y# = 0 : message$(a-32)="I" : electron(a-32,2)=rnd(3) : endif : if y# = 60 : message$(a-32)="J" : electron(a-32,2)=rnd(3) : endif : if y# = 120 : message$(a-32)="K" : electron(a-32,2)=rnd(3) : endif : if y# = 160 : message$(a-32)="L" : electron(a-32,2)=rnd(3) : endif : if y# = 240 : message$(a-32)="M" : electron(a-32,2)=rnd(3) : endif : if y# = 300 : message$(a-32)="N" : electron(a-32,2)=rnd(3) : endif : endif
if x# =240 : if y# = 0 : message$(a-32)="O" : electron(a-32,2)=rnd(3) : endif : if y# = 60 : message$(a-32)="P" : electron(a-32,2)=rnd(3) : endif : if y# = 120 : message$(a-32)="Q" : electron(a-32,2)=rnd(3) : endif : if y# = 160 : message$(a-32)="R" : electron(a-32,2)=rnd(3) : endif : if y# = 240 : message$(a-32)="S" : electron(a-32,2)=rnd(3) : endif : if y# = 300 : message$(a-32)="T" : electron(a-32,2)=rnd(3) : endif : endif
if x# =300 : if y# = 0 : message$(a-32)="U" : electron(a-32,2)=rnd(3) : endif : if y# = 60 : message$(a-32)="V" : electron(a-32,2)=rnd(3) : endif : if y# = 120 : message$(a-32)="W" : electron(a-32,2)=rnd(3) : endif : if y# = 160 : message$(a-32)="X" : electron(a-32,2)=rnd(3) : endif : if y# = 240 : message$(a-32)="Y" : electron(a-32,2)=rnd(3) : endif : if y# = 300 : message$(a-32)="Z" : electron(a-32,2)=rnd(3) : endif : endif
text 310,(a-32)*15,message$(a-32)
next a
scroll object texture 50,0,0.1 : if x > targetx : dec x : endif : if y > targety : dec y : endif : if z > targetz : dec z : endif : if x < targetx : inc x : endif : if y < targety : dec y : endif : if z < targetz : dec z : endif : position camera 0,0,0 : rotate camera x*0.1,y*0.1,z*0.1 : move camera -75 : if x=targetx and y=targety and z=targetz then targetx = rnd(3600) : targety = rnd(3600) : targetz = rnd(3600)
inc synced : if synced = speed : sync : synced = 0 : endif : loop
This version makes a kind of crude circuit board that the electrons run along. They turn at corners, and depending upon which corner hits which electron, a message is slowly generated in the bottom right corner.