порт с PowerBasic
Код:
If OpenWindow(0, 0, 0, 640, 400, "stars", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 640, 400)
Dim pal.l(63)
For m=1 To 21
pal(m)=RGB(m*12,m*12,m*8)
pal(m+21)=RGB(252,252,(m+21)*8)
pal(m+31)=$FFFFFF
Next m
zz=128
Dim zx.f(320)
Dim zy.f(320)
For m=0 To 319
zx(m)=160+100*Sin(m/160*#PI)
zy(m)=100+100*Cos(m/160*#PI)
Next m
RandomSeed(12345)
dn=300
Dim x.l(dn)
Dim y.l(dn)
Dim z.l(dn)
Dim aa.l(dn)
Dim ab.l(dn)
For m=1 To dn
x(m)=Random(320)
y(m)=Random(20)+110
z(m)=Random(128)
aa(m)=0
ab(m)=0
Next m
v=0
Repeat
Event = WindowEvent()
Sleep_(10)
If StartDrawing(CanvasOutput(0))
Box(0,0,640,480,0)
For m=1 To dn
z(m)+1
If z(m)>127
x(m)=Random(280)+20
y(m)=Sin(v/7)*7+Sin((x(m)-v)/10)*7+120
z(m)=0
EndIf
a.l=(zx(v)*z(m)-zz*x(m))/(z(m)-zz)
b.l=(zy(v)*z(m)-zz*y(m))/(z(m)-zz)
If a>-1 And a<320 And b>-1 And b<200
Box(a*2,b*2,2,2,pal(Int(z(m)/2)))
aa(m)=a
ab(m)=b
EndIf
Next m
v=(v+1)%320
StopDrawing()
EndIf
If GetAsyncKeyState_(#VK_ESCAPE)&$8000
Break
EndIf
Until Event = #PB_Event_CloseWindow
EndIf