home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1993-06-16 | 2.2 KB | 113 lines |
- ' ---------------------------------
- '
- ' AMOSPro Compiler Example
- '
- ' Line's Snaky
- '
- ' By Jean-Baptiste BOLCATO
- '
- ' (c) 1993 Europress Software Ltd.
- '
- ' ---------------------------------
- '
- '
- ' --------------------------------------------
- ' Remark: A line-bouncing snake demo
- '
- ' Average Acceleration: 220 %
- '
- ' Test configuration: A1200, 6Mb
- '
- ' Original AMOS Compiler: 200 %
- ' --------------------------------------------
-
- ' ---- Variables Init ----
-
- Dim X1(128),Y1(128),X2(128),Y2(128)
- Dim N(16)
- YMAX=256-56*(Ntsc=True)
-
- X1(1)=Rnd(320) : Y1(1)=Rnd(YMAX)
- X2(1)=Rnd(320) : Y2(1)=Rnd(YMAX)
- VX1=4 : VY1=2
- VX2=-3 : VY2=4
- N2=0 : N=1 : T=1
-
- ' ---- Screen Init ----
-
- Screen Open 0,320,YMAX,16,Lowres
- Flash Off : Curs Off : Hide
- For I=1 To 15 : Colour I,$800+I*$11 : Next I
-
- Cls 0 : Wait Vbl
-
- ' ---- Main Loop ----
-
- ' Switch OFF multitask
- Amos Lock : Break Off
- Dreg(0)=Execall(-132)
-
- Repeat
-
- CPT=0
-
- Repeat
-
- Timer=0
-
- ' Add a new line every 16 loops.
- Inc N2
- If N2=16
- N2=0 : Inc N
- Else
-
- ' Erase last line
- Ink 0 : Draw X1(N),Y1(N) To X2(N),Y2(N)
- End If
-
- ' Redraw all new lines
- For I=N To 2 Step -1
- X1(I)=X1(I-1) : Y1(I)=Y1(I-1)
- X2(I)=X2(I-1) : Y2(I)=Y2(I-1)
- Ink(I mod 15)+1 : Draw X1(I),Y1(I) To X2(I),Y2(I)
- Next I
-
- ' Calculate and draw first line
- Add X1(1),VX1 : If X1(1)<0 or X1(1)>320 : VX1=-VX1 : End If
- Add Y1(1),VY1 : If Y1(1)<0 or Y1(1)>YMAX : VY1=-VY1 : End If
- Add X2(1),VX2 : If X2(1)<0 or X2(1)>320 : VX2=-VX2 : End If
- Add Y2(1),VY2 : If Y2(1)<0 or Y2(1)>YMAX : VY2=-VY2 : End If
- Ink 1 : Draw X1(1),Y1(1) To X2(1),Y2(1)
-
- Screen Swap
-
- If Timer>T : Inc CPT : End If
-
- Until CPT>4
-
- ' Report message
- N(T)=N : Inc T : Bell
-
- Until T=6
-
- _EXIT:
-
- ' --- Final Report ---
-
- ' Switch ON multitask
- Dreg(0)=Execall(-138)
- Amos Unlock : Break On
-
- Home : Paper 0 : Pen 15
- Print " --- Final status report --- "
- Print
- For T2=1 To T-1
- Print "< Needs";N(T2);" lines to pass under";T2;" VBL >"
- Next T2
- Print
- Print " Press mouse key to end"
- Repeat
- Multi Wait
- Until Mouse Key or(Inkey$<>"")
-
- End