home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1992-02-26 | 3.2 KB | 151 lines |
- ' *************************************************************
- '
- ' BOUNCY CIRCLES EXAMPLE
- ' ======================
- '
- ' /\/\/\/\/\/\/\/\/\
- ' By: Paul Nordovics
- ' \/\/\/\/\/\/\/\/\/
- '
- ' *************************************************************
- '
- Hide
- '
- ' **********************************
- ' reduce screen colours for SPEED!!!
- ' **********************************
- Screen Open 0,320,200,2,Lowres
- Curs Off : Flash Off
- Cls 0
- Colour 1,$FFF
- '
- ' ********************************
- ' double buffer to stop flickering
- ' ********************************
- Double Buffer
- '
- ' **************************
- ' kill automatic bob updates
- ' **************************
- Bob Update Off
- '
- ' *****************************
- ' output to LOGICAL screen only
- ' *****************************
- Autoback 0
- '
- ' **************
- ' set up circles
- ' **************
- '
- ' ****************************
- ' AMOUNT = number of circles+1
- ' ****************************
- AMOUNT=5 : Rem CHANGE ME !!!
- '
- Dim X(AMOUNT)
- Dim Y#(AMOUNT)
- Dim SPEED#(AMOUNT)
- Dim STATE(AMOUNT)
- Dim DELAY(AMOUNT)
- '
- ' **************
- ' set up circles
- ' **************
- For K=0 To AMOUNT
- X(K)=Rnd(303)
- Y#(K)=180
- SPEED#(K)=Rnd(10)+2
- STATE(K)=0
- DELAY(K)=(Rnd(10)*5)+1
- Set Bob K,-1,,
- Next K
- '
- ACCEL#=0.6 : Rem CHANGE ME !!!
- '
- ' ***************************
- ' set up a speed LUT, faster
- ' than using RND in main loop
- ' ***************************
- Dim SPEED_LUT#(10)
- For K=0 To 9
- SPEED_LUT#(K)=Rnd(10)+2
- Next K
- '
- ' *****************
- ' end of LUT marker
- ' *****************
- SPEED_LUT#(10)=-1.0
- '
- ' -------------------------------------------------------------
- '
- ' *************************************************************
- ' MAIN LOOP
- ' *************************************************************
- Do
- Wait Vbl
- Cls 0
- Gosub _DO_CIRCLES
- Bob Draw
- Screen Swap
- Loop
- '
- ' -------------------------------------------------------------
- '
- ' *************************************************************
- ' DO CIRCLES
- ' *************************************************************
- _DO_CIRCLES:
- For K=0 To AMOUNT
- ' ****
- ' wait
- ' ****
- If STATE(K)=0
- Add DELAY(K),-1
- If DELAY(K)=0
- STATE(K)=1
- End If
- End If
- ' ******
- ' launch
- ' ******
- If STATE(K)=1
- If SPEED#(K)>0
- SPEED#(K)=SPEED#(K)-ACCEL#
- If SPEED#(K)<=0.0
- SPEED#(K)=0.0
- STATE(K)=2
- End If
- End If
- Y#(K)=Y#(K)-SPEED#(K)
- End If
- ' ****
- ' fall
- ' ****
- If STATE(K)=2
- SPEED#(K)=SPEED#(K)+ACCEL#
- Y#(K)=Y#(K)+SPEED#(K)
- If Y#(K)>180.0
- Y#(K)=180.0
- STATE(K)=3
- End If
- End If
- ' ********************
- ' get new launch speed
- ' ********************
- If STATE(K)=3
- Repeat
- SPEED#(K)=SPEED_LUT#(SPEED_LUT_POINTER)
- If SPEED#(K)=-1.0
- SPEED_LUT_POINTER=0
- End If
- Until SPEED#(K)<>-1.0
- Add SPEED_LUT_POINTER,1
- STATE(K)=1
- End If
- Bob K,X(K),Y#(K),1
- Next K
- Return
- '
- ' -------------------------------------------------------------
- '