Listing of file='BOUNCE.BAS;01' on disk='vmedia/bounce_ball-sector.ccvf'
14 OUT 8,255:REM ENABLE KEYBOARD 15 PLOT 30,20,29,17,27,24,14,12,3,26,5 18 PRINT "B O U N C E" 22 PLOT 15,3,15,31 26 PRINT "COPYRIGHT 1979 BY DAVID B. SUITS" 28 REM GENERAL STUDIES 29 REM ROCHESTER INSTITUTE OF TECHNOLOGY 30 REM ROCHESTER, NY 14623 33 PLOT 6,100,14,3,17,19 34 REM 35 PRINT "THIS PROGRAM NOT TO BE COPIED" 36 REM 37 REM 38 PLOT 3,64,0:FOR J= 1TO 2000:NEXT 99 REM INSTRUCTIONS 100 PLOT 15:GOSUB 4000 109 REM FIRST PLAYER TO GET 'WINS' IS THE WINNER 110 WINS= 50 120 SC(1)= 0:SC(2)= 0 129 REM TIME INCREMENT FOR PLOTTING BALL 130 T= .09 139 REM FRICTION TO DECREASE HORZ. VELOCITY WHENEVER BALL HITS 140 F= .85 145 REM START EACH NEW ROUND HERE 149 REM SET UP DISPLAY 150 OUT 8,247:REM LOCK OUT KEYBOARD 160 GOSUB 3000 199 REM PRINT SCORES & DETERMINE WHO GOES FIRST 200 FOR P= 1TO 2:GOSUB 500:NEXT 205 P= 1:IF RND (1)> .5THEN P= 2 209 REM EACH PLAYER GETS 5 BALLS PER ROUND 210 B(1)= 0:B(2)= 0 299 REM PRINT SCORE 300 GOSUB 500 305 OUT 8,255:REM ENABLE KEYBOARD 309 REM IS THERE A WINNER? 310 IF SC(P)= > WINSTHEN 9000 319 REM ARE ALL POSSIBLE POINTS TAKEN? 320 IF N= 8THEN 150 329 REM GET NEXT PLAYER 330 P= 2+ (P= 2) 339 REM HAVE BOTH PLAYERS HAD 5 BALLS? 340 B(P)= B(P)+ 1:IF B(P)= 6THEN 150 350 PLOT 6,1- 5* (P= 2),3,1- 37* (P= 2),2:PRINT "BALL#"B(P) 399 REM GET HEIGHT, ETC. 400 GOSUB 2000 409 REM BOUNCE THE BALL 410 OUT 8,247:REM LOCK OUT KEYBOARD 415 GOSUB 1000 419 REM SEE IF PLAYER GOT ANY POINTS 420 GOSUB 600 430 OUT 8,255:REM ENABLE KEYBOARD 440 GOTO 300 497 REM PRINT SCORE 500 PLOT 6,2,3,18- 37* (P= 2),0:PRINT SC(P)" ":RETURN 597 REM CHECK FOR POINTS 600 N= 0:FOR K= 1TO 8:IF S(K)= 0THEN N= N+ 1:GOTO 620 610 IF PEEK (M(K)+ 1)< > 2THEN SC(P)= SC(P)+ S(K):S(K)= 0 620 NEXT 629 REM CHECK FOR PENALTY POINTS 630 X= INT (X) 640 FOR J= 1TO 9STEP 2 650 IF X= > X(J)AND X< = X(J+ 1)THEN SC(P)= SC(P)- 2 660 NEXT 670 RETURN 997 REM BOUNCE THE BALL 1000 Z= 0:X= 6:Y= H:G= 32.2 1002 PLOT 6,7,30,2,X,Y+ 4 1005 XL= X:YL= Y:X= X+ V* T:IF X> L- 1THEN 1100 1010 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 1030 1020 Y= 0:Z= - Z* C:V= V* F:IF ABS (V)< 3AND ABS (Z)< .5THEN 1900 1030 PLOT XL,YL+ 4,X,Y+ 4:GOTO 1005 1100 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF INT (Y1)> DAND Y1< UTHEN Z= Z1:Y= Y1:GOTO 1200 1110 IF Y1= > U+ 1THEN Z= Z1:Y= Y1:X= L- 1:V= V* - F:GOTO 1160 1120 IF INT (Y1)= > UAND Z1> 0THEN Y= U- 1:Z= - Z* C:V= V* F:GOTO 1200 1130 IF INT (Y1)= DAND Z1< 0THEN Y= D+ 1:Z= - Z* C:V= V* F:GOTO 1200 1140 X= L- 1:V= V* - F:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 1160 1150 Y= 0:Z= - Z* C:V= V* F:IF ABS (V)< 3AND ABS (Z)< .5THEN 1900 1160 PLOT XL,YL+ 4,X,Y+ 4:XL= X:YL= Y:X= X+ V* T:IF X< 6THEN X= 6:V= V* - F:GOTO 1010 1165 IF X> L- 1THEN 1244 1170 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 1160 1180 GOTO 1150 1200 PLOT XL,YL+ 4,X,Y+ 4:XL= X:YL= Y:X= X+ V* T:IF X= > 126THEN X= 125:V= V* - F:GOTO 1310 1205 IF X< R+ 1THEN 1240 1210 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 1200 1220 Y= 0:Z= - Z* C:V= V* F:IF ABS (V)< 3AND ABS (Z)< .5THEN 1900 1230 GOTO 1200 1240 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF INT (Y1)> DAND Y1< UTHEN Z= Z1:Y= Y1:GOTO 1200 1241 IF Y1< D+ 1AND Z1< 0THEN Y= D+ 1:Z= - Z* C:V= V* F:GOTO 1200 1242 GOTO 1120 1244 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF INT (Y1)> DAND Y1< UTHEN Z= Z1:Y= Y1:GOTO 1160 1245 IF Y1< D+ 1AND Z1< 0THEN Y= D+ 1:Z= - Z* C:V= V* F:GOTO 1160 1246 GOTO 1420 1300 PLOT XL,YL+ 4,X,Y+ 4:XL= X:YL= Y:X= X+ V* T:IF X< R+ 1THEN 1400 1310 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 1300 1320 Y= 0:Z= - Z* C:V= V* F:IF ABS (V)< 3AND ABS (Z)< .5THEN 1900 1330 GOTO 1300 1400 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF INT (Y1)> DAND Y1< UTHEN Z= Z1:Y= Y1:GOTO 1160 1410 IF Y1= > U+ 1THEN Z= Z1:Y= Y1:X= R+ 1:V= V* - F:GOTO 1200 1420 IF INT (Y1)= > UAND Z1> 0THEN Y= U- 1:Z= - Z* C:V= V* F:GOTO 1160 1430 IF INT (Y1)= DAND Z1< 0THEN Y= D+ 1:Z= - Z* C:V= V* F:GOTO 1160 1440 X= R+ 1:V= V* - F:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 1200 1450 GOTO 1220 1900 PLOT 255,29:RETURN 1997 REM GET HEIGHT, ETC. 2000 LN= 3:FOR K= 1TO 3:GOSUB 2200:PRINT SPC( 25)"":NEXT 2010 LN= 3:GOSUB 2200:INPUT "HEIGHT (10-90): ";A$:H= VAL (A$) 2020 IF H< 10THEN H= 10 2030 IF H> 90THEN H= 90 2040 PLOT 30,6,33,2,4,HI+ 4,5,HI+ 4,4,H+ 4,5,H+ 4,255,29 2050 HI= H 2060 GOSUB 2200:INPUT "VLOCTY (1-100): ";A$:V= VAL (A$) 2070 IF V< 1THEN V= 1 2075 IF V> 100THEN V= 100 2080 GOSUB 2200:INPUT "BNCE COEFFICNT: ";A$:C= VAL (A$) 2090 IF C< .1THEN C= .1 2100 IF C> .85THEN C= .85 2110 PLOT 3,64,0:RETURN 2200 LN= LN+ 1:PLOT 6,1- 5* (P= 2),3,1- 37* (P= 2),LN:RETURN 2997 REM SET UP DISPLAY 3000 PLOT 6,0,12,6,32,3,63,8,27,10:PRINT SPC( 24)"" 3010 PLOT 3,2,8:PRINT SPC( 24)"" 3020 PLOT 6,6,3,1,8:FOR K= 1TO 5:PRINT "0 ";:NEXT 3030 PLOT 3,0,7:FOR K= 1TO 9STEP 2:PRINT 10- K" ";:NEXT :PRINT 3040 PLOT 27,24,6,32,3,2,31:PRINT SPC( 61)"":PLOT 3,64,0 3047 REM DETERMINE MIDDLE BARRIER POSITION 3048 REM U=UPPER LIP D=LOWER LIP 3049 REM L=LEFT SIDE R=RIGHT SIDE 3050 U= INT (20* RND (1))+ 20 3060 IF U/ 4< > INT (U/ 4)THEN U= U+ 1:GOTO 3060 3070 D= U- 9:IF RND (1)> .3THEN D= D- 4 3080 L= INT (60* RND (1))+ 30:IF L/ 2< > INT (L/ 2)THEN L= L+ 1 3090 R= L+ 1:GOSUB 3500 3099 REM SET UP POINT VALUES IN S( ) & POKE INTO SCREEN 3150 S(1)= 9:S(2)= 8:S(3)= 5:S(4)= 3:S(5)= 5:S(6)= 9:S(7)= 8:S(8)= 8 3160 FOR K= 1TO 5:M(K)= 26492+ 384* K 3170 POKE M(K)+ 1,2:POKE M(K),S(K)+ 48 3180 NEXT 3190 X= 28544+ R+ 1 3200 M(6)= X- 128* (INT (U/ 4)+ 3):POKE M(6)+ 1,2:POKE M(6),S(6)+ 48 3210 M(7)= M(6)+ 256:POKE M(7)+ 1,2:POKE M(7),S(7)+ 48 3220 M(8)= X- 128* (INT (U/ 4)- 4):POKE M(8)+ 1,2:POKE M(8),S(8)+ 48 3299 REM PRINT HEADINGS 3300 FOR K= 1TO 2:PLOT 6,1- 5* (K= 2),3,1- 37* (K= 2),0 3310 PRINT "PLAYER"K" SCORE:" 3320 NEXT 3340 HI= 50:PLOT 6,36,2,4,HI+ 4,5,HI+ 4,255 3359 REM PENALTY POINT SPOTS 3360 X(1)= 10:X(2)= 13:X(3)= INT ((L- 17)/ 2)+ 10:IF X(3)/ 2< > INT (X(3))/ 2THEN X(3)= X(3)+ 1 3363 X(4)= X(3)+ 3:X(5)= L- 8:X(6)= X(5)+ 3:X(7)= R+ 5:X(8)= X(7)+ 3 3365 X(9)= 118:X(10)= 121 3370 PLOT 30:FOR J= 1TO 9STEP 2:PLOT 6,20,3,X(J)/ 2,31:PRINT "-2";:PLOT 6,34:PRINT "a":NEXT 3380 PLOT 29:RETURN 3499 REM DRAW MIDDLE BARRIER 3500 PLOT 6,36,2,L,95,242,L,U+ 4,240,136,253,L,D+ 4,242,L,4,240,136,255:RETURN 3997 REM INSTRUCTIONS 4000 L= 124:R= 126:D= 15:U= 100:X= 6:Y= 22.5:V= 21:C= .75 4005 Z= 0:G= 32.2:T= .09:F= .78:PLOT 30,6,35,2,X,Y+ 4:GOSUB 1005 4020 PLOT 6,35,12:PRINT 4030 PRINT " THE OBJECT OF THIS GAME IS TO BOUNCE A BALL AROUND THE COURT" 4035 PRINT 4040 PRINT " AND WIN POINTS BY HITTING THE GREEN NUMBERS ON THE WALLS. (IF" 4045 PRINT 4050 PRINT " THE BALL COMES TO REST ON ANY OF THE AREAS LABELED -2, YOU ARE" 4055 PRINT 4060 PRINT " PENALIZED 2 POINTS.) THE FIRST PLAYER TO GET 50 POINTS IS THE" 4065 PRINT 4070 PRINT " WINNER." 4075 PRINT :PRINT 4080 PRINT " PLAYERS ALTERNATE TURNS, AND AFTER EACH PLAYER HAS BOUNCED 5" 4085 PRINT 4090 PRINT " BALLS, THE DISPLAY IS RE-DRAWN AND A NEW ROUND BEGINS." 4095 PRINT :PRINT 4100 PRINT " TO BOUNCE THE BALL YOU MUST SPECIFY THE INITIAL HEIGHT (0-90" 4105 PRINT 4110 PRINT " FEET), THE INITIAL VELOCITY (1-100 FT.PER SEC.) AND THE BALL'S" 4115 PRINT 4120 PRINT " 'BOUNCE COEFFICIENT' (GREATER THAN 0 AND A MAXIMUM OF .85)." 4125 PRINT :PRINT 4130 PRINT " THE BOUNCE COEFFICIENT IS THE RATIO OF THE VELOCITY OF THE" 4140 PRINT " BALL AFTER A BOUNCE TO THE VELOCITY BEFORE THE BOUNCE. FOR" 4150 PRINT " EXAMPLE, A SUPER-BALL HAS A BOUNCE COEFFICIENT OF ABOUT .8" 4160 PRINT " (VERY HIGH BOUNCE)." 4165 PRINT 4170 PRINT TAB( 14); 4180 INPUT "NOW PRESS RETURN TO BEGIN THE GAME ";A$ 4190 RETURN 8997 REM PLAY AGAIN? 9000 PLOT 6,3,3,5,10:PRINT "*************" 9005 PLOT 6,1- 5* (P= 2),14,3,5,13:PRINT "PLAYER"P" WINS" 9010 PLOT 15,6,3,3,5,15:PRINT "*************" 9015 PLOT 6,7,3,5,17:PRINT "CARE TO" 9020 PLOT 3,5,18:INPUT "PLAY AGAIN? ";A$ 9025 IF LEFT$ (A$,1)= "Y"OR LEFT$ (A$,1)= "O"THEN 110 9030 IF LEFT$ (A$,1)< > "N"THEN PLOT 3,17,18:PRINT SPC( LEN (A$))"":GOTO 9020 9050 LOAD "MENU":RUN