home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 6 / Amoszine 6 (Disk 2 of 2).adf / extra_source.lha / OTHER_SOURCE / MULTI_LINE.Amos / MULTI_LINE.amosSourceCode
Encoding:
AMOS Source Code  |  1992-02-26  |  1.3 KB  |  58 lines

  1. '
  2. '
  3. '  Multi-coloured lines    
  4. '  and a little demo too (runs faster compiled!!)
  5. '    
  6. Default Palette 0,$FFF
  7. Hide On 
  8. Screen Open 0,320,200,32,Lowres
  9. Cls 0 : Paper 0 : Pen 1 : Curs Off : Flash Off : Cls 
  10. ' now setup palette
  11. For N=1 To 15
  12.    SH=$110*N
  13.    Colour N,SH
  14.    Colour 30-N,SH
  15. Next N
  16. Shift Up 1,1,29,1
  17. X=Rnd(320) : Y=Rnd(200)
  18. MULTI_LINE[X,Y,X+1,Y+1,1,29]
  19. Repeat 
  20.    NX=Rnd(320) : NY=Rnd(200)
  21.    MULTI_LINE[X,Y,NX,NY,Param,29]
  22.    X=NX : Y=NY
  23. Until Inkey$<>""
  24. '
  25. Cls 0 : Clear Key 
  26. Do 
  27.    Repeat 
  28.       X1=Rnd(320) : X2=Rnd(320)
  29.       Y1=Rnd(200) : Y2=Rnd(200)
  30.       T=Min(Y1,Y2) : B=Max(Y1,Y2)
  31.       L=Min(X1,X2) : R=Max(X1,X2)
  32.    Until(T<>B) and(R<>L)
  33.    Do 
  34.       MULTI_LINE[L,T,R,T,Param,29]
  35.       Inc T : Exit If T=B
  36.       MULTI_LINE[R,T,R,B,Param,29]
  37.       Dec R : Exit If R=L
  38.       MULTI_LINE[R,B,L,B,Param,29]
  39.       Dec B : Exit If T=B
  40.       MULTI_LINE[L,B,L,T,Param,29]
  41.       Inc L : Exit If R=L
  42.    Loop 
  43. Loop 
  44. '
  45. Procedure MULTI_LINE[XS,YS,XF,YF,NUM,LIM]
  46.    'Modified by Andrew Church: colours start over at NUM instead of 1 
  47.    'draws a multi-coloured line from colour 1 to LIM
  48.    CNT=Max(Abs(XS-XF),Abs(YS-YF))
  49.    X#=XS : Y#=YS
  50.    DX#=(XF-XS)*1.0/CNT : DY#=(YF-YS)*1.0/CNT
  51.    Repeat 
  52.       Dec CNT
  53.       Inc NUM : If NUM=>LIM Then NUM=1
  54.       Plot X#,Y#,NUM
  55.       X#=X#+DX#
  56.       Y#=Y#+DY#
  57.    Until CNT=0
  58. End Proc[NUM]