'##
'## Faster Starfield (multi directional) (C) Nick 2001...
'## =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
'##


'##
'## Variable definitions..
'##
p=0
qz=255
a$=""
a$=a$+"THIS NICE LITTLE PROGRAM WAS CODED BY"
a$=a$+"NICK SIMPSON (AKA SHOCKWAVE/FANATIX)!"
a$=a$+"IF YOU ARE A CODER TOO, YOU CAN EMAIL"
a$=a$+"        NICKSIMPSON007@AOL.com       "
a$=a$+"THATS ALL FOR NOW...  GOODBYE!!!!!!!!"


nstar=64
zm=0
xm=1
ym=1
dim ox(nstar)
dim oy(nstar)
dim oc(nstar)
dim os(nstar)
dim x(nstar)
dim y(nstar)
dim z(nstar)
dw=1

'##
'## Set Star positions..
'##
mmm=1
for a=1 to nstar
  x(a)=-25+ran(50)
  y(a)=-25+ran(50)
  z(a)=mmm
mmm=mmm+100/nstar
next a

open window 400,400

label mloop
'## double buffer draw on logic
   setdrawbuf dw
   clear window

       gosub dispstars

'##double buffer swap logic to physic
   setdispbuf dw
   dw=1-dw
   
goto mloop

'## Draw stars

label dispstars
mm=mm+.1
sx=.6*sin(mm/15)
sy=.6*sin(mm/19)
sz=1.5*sin(mm/23)
for a=1 to nstar
setrgb 1,0,0,oc(a)
fill rectangle ox(a),oy(a) to ox(a)+os(a),oy(a)+os(a)

qt=200-z(a)*2
setrgb 1,qt,qt,qt+20
xx=x(a)*25
yy=y(a)*25
xx=xx/z(a)*30
yy=yy/z(a)*30
   xx=xx+320
   yy=yy+250
zz=10-z(a)/14
os(a)=zz+4
     fill rectangle xx,yy to xx+zz,yy+zz
ox(a)=xx
oy(a)=yy
oc(a)=qt
z(a)=z(a)+sz

x(a)=x(a)+sx
y(a)=y(a)+sy
if y(a)<-25 y(a)=y(a)+50
if y(a)>25 y(a)=y(a)-50
if x(a)<-25 x(a)=x(a)+50
if x(a)>25 x(a)=x(a)-50
if z(a)<1 z(a)=z(a)+100
if z(a)>100 z(a)=z(a)-100
next a

qz=qz-1
if qz<=0 p=p+37 : if p>len(a$) p=0
if qz<=0 qz=255
setrgb 1,qz,qz,qz
text 139,254,MID$(a$,p+1,37)
return




