home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 501-525 / apd511 / starfield.amos / starfield.amosSourceCode
AMOS Source Code  |  1999-12-26  |  3KB  |  141 lines

  1. Rem AMOS expanding starfield by Sarv Engelhardt, 1990
  2. Screen Open 0,320,256,16,Lowres
  3. Flash Off : Curs Off : Cls 0
  4. Hide 
  5. ' number of stars N
  6. N=30
  7. Colour 1,$888 : Colour 2,$999 : Colour 3,$AAA
  8. Colour 4,$EEE : Colour 5,$DDF : Colour 6,$FF0
  9. Dim C(N),X(N),Y(N),SX(N),SY(N)
  10. Global DX,DY
  11. 'set up initial star positions and colours 
  12. For I=0 To N
  13.    X(I)=Rnd(320) : Y(I)=Rnd(256) : C(I)=Rnd(5)+1
  14. Next I
  15. ' calcuate shifts for each star and store in sx(),sy() 
  16. For I=0 To N
  17.    STARSHIFT[X(I),Y(I)]
  18.    SX(I)=DX : SY(I)=DY
  19. Next I
  20. Double Buffer 
  21. Autoback 0
  22. Screen Swap : Wait Vbl 
  23. 'show initial star field 
  24. For I=0 To N
  25.    Plot X(I),Y(I),C(I)
  26. Next I
  27. ' zoom!
  28. Do 
  29. Cls 0 : Wait Vbl 
  30.    For I=0 To N
  31. 'check if star goes off screen edge and replace it with
  32. 'a new one near the centre if it does
  33.       If X(I)>320 or Y(I)>256 or X(I)<0 or Y(I)<0
  34.          X(I)=Rnd(120)+100 : Y(I)=Rnd(120)+68
  35.          STARSHIFT[X(I),Y(I)]
  36.          SX(I)=DX : SY(I)=DY
  37.       End If 
  38.       Add X(I),SX(I) : Add Y(I),SY(I)
  39.       Plot X(I),Y(I),C(I)
  40.    Next I
  41.  Screen Swap : Wait Vbl 
  42. Loop 
  43. Show : Edit 
  44. Procedure STARSHIFT[X,Y]
  45.    DX=0 : DY=0
  46.    P1#=0.02 : P2#=0.48 : P3#=1.0 : P4#=2.2 : P5#=30.0
  47.    If X>155 and X<165 : Goto EX : End If 
  48.    If Y>123 and Y<133 : Goto EX : End If 
  49.    AX#=X-160.0 : AY#=Y-128.0
  50.    R#=AX#/AY#
  51.    EX:
  52.    CX=X-160 : CY=Y-128
  53.    If CX>=-5 and CX<=5 and Y>=128
  54.       DX=0 : DY=3
  55.       Pop Proc
  56.    End If 
  57.    If CY>=-5 and CY<=5 and X>=160
  58.       DX=3 : DY=0
  59.       Pop Proc
  60.    End If 
  61.    If CX>=-5 and CX<=5 and Y<128
  62.       DX=0 : DY=-3
  63.       Pop Proc
  64.    End If 
  65.    If CY>=-5 and CY<=5 and X<160
  66.       DX=-3 : DY=0
  67.       Pop Proc
  68.    End If 
  69.    If X>=160 and Y<=128
  70.       If R#>=-P2# and R#<-P1#
  71.          DX=1 : DY=-3
  72.          Pop Proc
  73.       End If 
  74.       If R#>=-P3# and R#<-P2#
  75.          DX=2 : DY=-2
  76.          Pop Proc
  77.       End If 
  78.       If R#>=-P4# and R#<-P3#
  79.          DX=3 : DY=-2
  80.          Pop Proc
  81.       End If 
  82.       If R#>-P5# and R#<-P4#
  83.          DX=3 : DY=-1
  84.          Pop Proc
  85.       End If 
  86.    End If 
  87.    If X>160 and Y>128
  88.       If R#>=P1# and R#<P2#
  89.          DX=1 : DY=3
  90.          Pop Proc
  91.       End If 
  92.       If R#>=P2# and R#<P3#
  93.          DX=2 : DY=2
  94.          Pop Proc
  95.       End If 
  96.       If R#>=P3# and R#<P4#
  97.          DX=3 : DY=2
  98.          Pop Proc
  99.       End If 
  100.       If R#>=P4# and R#<P5#
  101.          DX=3 : DY=1
  102.          Pop Proc
  103.       End If 
  104.    End If 
  105.    If X<160 and Y<128
  106.       If R#>=P1# and R#<P2#
  107.          DX=-1 : DY=-3
  108.          Pop Proc
  109.       End If 
  110.       If R#>=P2# and R#<P3#
  111.          DX=-2 : DY=-2
  112.          Pop Proc
  113.       End If 
  114.       If R#>=P3# and R#<P4#
  115.          DX=-3 : DY=-2
  116.          Pop Proc
  117.       End If 
  118.       If R#>=P4# and R#<P5#
  119.          DX=-3 : DY=-1
  120.          Pop Proc
  121.       End If 
  122.    End If 
  123.    If X<160 and Y>128
  124.       If R#>=-P2# and R#<-P1#
  125.          DX=-1 : DY=3
  126.          Pop Proc
  127.       End If 
  128.       If R#>=-P3# and R#<-P2#
  129.          DX=-2 : DY=2
  130.          Pop Proc
  131.       End If 
  132.       If R#>=-P4# and R#<-P3#
  133.          DX=-3 : DY=2
  134.          Pop Proc
  135.       End If 
  136.       If R#>=-P5# and R#<-P4#
  137.          DX=-3 : DY=1
  138.          Pop Proc
  139.       End If 
  140.    End If 
  141. End Proc