Listing of file='BOUNCE.BAS;01' on disk='vmedia/bounce-sector.ccvf'
100 REM KY BOUNCE 110 REM COPYRIGHT (C) 1979 DAVID B. SUITS 120 REM GENERAL STUDIES 130 REM ROCHESTER INSTITUTE OF TECHNOLOGY 140 REM ROCHESTER, NY 14623 145 REM V4/27/80 RHT 150 OUT 8,4:PLOT 6,1,27,24,14,12,3,20,7 160 T$= "{d {d tu vw ab vw pb as tf vi {e l":PRINT T$ 170 PLOT 15,3,15,31:PRINT "COPYRIGHT(C) 1979 COMPUCOLOR CORP" 180 PLOT 3,64,0:FOR J= 1TO 1100:NEXT J 190 REM INSTRUCTIONS 200 PLOT 15:GOSUB 1560 210 REM FIRST PLAYER TO GET 'WINS' IS THE WINNER 220 WINS= 50 230 SC(1)= 0:SC(2)= 0 240 REM TIME INCREMENT FOR PLOTTING BALL 250 T= .09 260 REM FRICTION TO DECREASE HORZ. VELOCITY WHENEVER BALL HITS 270 F= .85 280 REM START EACH NEW ROUND HERE 290 REM SET UP DISPLAY 300 GOSUB 1200 310 REM PRINT SCORES & DETERMINE WHO GOES FIRST 320 FOR P= 1TO 2:GOSUB 550:NEXT 330 P= 1:IF RND (1)> .5THEN P= 2 340 REM EACH PLAYER GETS 5 BALLS PER ROUND 350 B(1)= 0:B(2)= 0 360 REM PRINT SCORE 370 GOSUB 550 380 REM IS THERE A WINNER? 390 IF SC(P)= > WINSTHEN 1870 400 REM ARE ALL POSSIBLE POINTS TAKEN? 410 IF N= 8THEN N= 0:GOTO 300 420 REM GET NEXT PLAYER 430 P= 2+ (P= 2) 440 REM HAVE BOTH PLAYERS HAD 5 BALLS? 450 B(P)= B(P)+ 1:IF B(P)= 6THEN 300 460 PLOT 6,1- 5* (P= 2),3,1- 37* (P= 2),2:PRINT "BALL#"B(P):REM 470 REM GET HEIGHT, ETC. 480 GOSUB 1060 490 REM BOUNCE THE BALL 500 GOSUB 670 510 REM SEE IF PLAYER GOT ANY POINTS 520 GOSUB 570 530 GOTO 370 540 REM PRINT SCORE 550 PLOT 6,2,3,18- 37* (P= 2),0:PRINT SC(P)" ":RETURN 560 REM CHECK FOR POINTS 570 N= 0:FOR K= 1TO 8:IF S(K)= 0THEN N= N+ 1:GOTO 590 580 IF PEEK (M(K)+ 1)< > 33THEN SC(P)= SC(P)+ S(K):S(K)= 0 590 NEXT 600 REM CHECK FOR PENALTY POINTS 610 X= INT (X) 620 FOR J= 1TO 9STEP 2 630 IF X= > X(J)AND X< = X(J+ 1)THEN SC(P)= SC(P)- 2 640 NEXT 650 RETURN 660 REM BOUNCE THE BALL 670 Z= 0:X= 6:Y= H:G= 32.2 680 PLOT 6,3,30,2,X,Y+ 4 690 XL= X:YL= Y:X= X+ V* T:IF X> L- 1THEN 730 700 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 720 710 Y= 0:Z= - Z* C:V= V* F:IF ABS (V)< 3AND ABS (Z)< .5THEN 1040 720 PLOT XL,YL+ 4,X,Y+ 4:GOTO 690 730 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF INT (Y1)> DAND Y1< UTHEN Z= Z1:Y= Y1:GOTO 830 740 IF Y1= > U+ 1THEN Z= Z1:Y= Y1:X= L- 1:V= V* - F:GOTO 790 750 IF INT (Y1)= > UAND Z1> 0THEN Y= U- 1:Z= - Z* C:V= V* F:GOTO 830 760 IF INT (Y1)= DAND Z1< 0THEN Y= D+ 1:Z= - Z* C:V= V* F:GOTO 830 770 X= L- 1:V= V* - F:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 790 780 Y= 0:Z= - Z* C:V= V* F:IF ABS (V)< 3AND ABS (Z)< .5THEN 1040 790 PLOT XL,YL+ 4,X,Y+ 4:XL= X:YL= Y:X= X+ V* T:IF X< 6THEN X= 6:V= V* - F:GOTO 700 800 IF X> L- 1THEN 910 810 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 790 820 GOTO 780 830 PLOT XL,YL+ 4,X,Y+ 4:XL= X:YL= Y:X= X+ V* T:IF X= > 126THEN X= 125:V= V* - F:GOTO 950 840 IF X< R+ 1THEN 880 850 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 830 860 Y= 0:Z= - Z* C:V= V* F:IF ABS (V)< 3AND ABS (Z)< .5THEN 1040 870 GOTO 830 880 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF INT (Y1)> DAND Y1< UTHEN Z= Z1:Y= Y1:GOTO 830 890 IF Y1< D+ 1AND Z1< 0THEN Y= D+ 1:Z= - Z* C:V= V* F:GOTO 830 900 GOTO 750 910 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF INT (Y1)> DAND Y1< UTHEN Z= Z1:Y= Y1:GOTO 790 920 IF Y1< D+ 1AND Z1< 0THEN Y= D+ 1:Z= - Z* C:V= V* F:GOTO 790 930 GOTO 1000 940 PLOT XL,YL+ 4,X,Y+ 4:XL= X:YL= Y:X= X+ V* T:IF X< R+ 1THEN 980 950 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 940 960 Y= 0:Z= - Z* C:V= V* F:IF ABS (V)< 3AND ABS (Z)< .5THEN 1040 970 GOTO 940 980 Z1= Z- G* T:Y1= Y+ .5* (Z1+ Z)* T:IF INT (Y1)> DAND Y1< UTHEN Z= Z1:Y= Y1:GOTO 790 990 IF Y1= > U+ 1THEN Z= Z1:Y= Y1:X= R+ 1:V= V* - F:GOTO 830 1000 IF INT (Y1)= > UAND Z1> 0THEN Y= U- 1:Z= - Z* C:V= V* F:GOTO 790 1010 IF INT (Y1)= DAND Z1< 0THEN Y= D+ 1:Z= - Z* C:V= V* F:GOTO 790 1020 X= R+ 1:V= V* - F:IF Y1> 0THEN Z= Z1:Y= Y1:GOTO 830 1030 GOTO 860 1040 PLOT 255,29:RETURN 1050 REM GET HEIGHT, ETC. 1060 LN= 3:FOR K= 1TO 3:GOSUB 1180:PRINT SPC( 25)"":NEXT 1070 LN= 3:GOSUB 1180:OUT 8,255 1080 INPUT "HEIGHT (10-90): ";A$:H= VAL (A$) 1090 IF H< 10OR H> 90THEN LN= 3:GOSUB 1180:PRINT SPC( 26):GOTO 1070 1100 PLOT 30,6,33,2,4,HI+ 4,5,HI+ 4,4,H+ 4,5,H+ 4,255,29 1110 HI= H 1120 GOSUB 1180:INPUT "HORZ. VELOCITY: ";A$:V= VAL (A$) 1130 IF V< 1OR V> 500THEN LN= 4:GOSUB 1180:PRINT SPC( 26):LN= 4:GOTO 1120 1140 GOSUB 1180:INPUT "BNCE COEFFICNT: ";A$:C= VAL (A$) 1150 IF C< .1OR C> .85THEN LN= 5:GOSUB 1180:PRINT SPC( 26):LN= 5:GOTO 1140 1160 OUT 8,4:REM DISABLE KEYBOARD 1170 PLOT 3,64,0:RETURN 1180 LN= LN+ 1:PLOT 6,1- 5* (P= 2),3,1- 37* (P= 2),LN:RETURN 1190 REM SET UP DISPLAY 1200 PLOT 6,0,12,6,32,3,63,8,27,10:PRINT SPC( 24)"" 1210 PLOT 3,2,8:PRINT SPC( 24)"" 1220 PLOT 6,6,3,1,8:FOR K= 1TO 5:PRINT "0 ";:NEXT 1230 PLOT 3,0,7:FOR K= 1TO 9STEP 2:PRINT 10- K" ";:NEXT :PRINT 1240 PLOT 27,24,6,32,3,2,31:PRINT SPC( 61)"":PLOT 3,64,0 1250 REM DETERMINE MIDDLE BARRIER POSITION 1260 REM U=UPPER LIP D=LOWER LIP 1270 REM L=LEFT SIDE R=RIGHT SIDE 1280 U= INT (20* RND (1))+ 20 1290 IF U/ 4< > INT (U/ 4)THEN U= U+ 1:GOTO 1290 1300 D= U- 9:IF RND (1)> .3THEN D= D- 4 1310 L= INT (60* RND (1))+ 30:IF L/ 2< > INT (L/ 2)THEN L= L+ 1 1320 R= L+ 1:GOSUB 1540 1330 REM SET UP POINT VALUES IN S( ) & POKE INTO SCREEN 1340 S(1)= 9:S(2)= 8:S(3)= 5:S(4)= 3:S(5)= 5:S(6)= 9:S(7)= 8:S(8)= 8 1350 FOR K= 1TO 5:M(K)= 26492+ 384* K 1360 POKE M(K)+ 1,33:POKE M(K),S(K)+ 48 1370 NEXT 1380 X= 28544+ R+ 1 1390 M(6)= X- 128* (INT (U/ 4)+ 3):POKE M(6)+ 1,33:POKE M(6),S(6)+ 48 1400 M(7)= M(6)+ 256:POKE M(7)+ 1,33:POKE M(7),S(7)+ 48 1410 M(8)= X- 128* (INT (U/ 4)- 4):POKE M(8)+ 1,33:POKE M(8),S(8)+ 48 1420 REM PRINT HEADINGS 1430 FOR K= 1TO 2:PLOT 6,1- 5* (K= 2),3,1- 37* (K= 2),0 1440 PRINT "PLAYER"K" SCORE:" 1450 NEXT 1460 HI= 50:PLOT 6,36,2,4,HI+ 4,5,HI+ 4,255 1470 REM PENALTY POINT SPOTS 1480 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 1490 X(4)= X(3)+ 3:X(5)= L- 8:X(6)= X(5)+ 3:X(7)= R+ 5:X(8)= X(7)+ 3 1500 X(9)= 118:X(10)= 121 1510 PLOT 30:FOR J= 1TO 9STEP 2:PLOT 6,52,3,X(J)/ 2,31:PRINT "-2";:PLOT 6,38:PRINT "a":NEXT 1520 PLOT 29:RETURN 1530 REM DRAW MIDDLE BARRIER 1540 PLOT 6,36,2,L,95,242,L,U+ 4,240,136,253,L,D+ 4,242,L,4,240,136,255:RETURN 1550 REM INSTRUCTIONS 1560 L= 124:R= 126:D= 15:U= 100:X= 6:Y= 21:V= 23.4:C= .74 1570 Z= 0:G= 32.2:T= .09:F= .78:PLOT 30,6,3,2,X,Y+ 4:GOSUB 690 1580 PLOT 30,2,97,4,97,0,255,29 1585 FOR I= 1TO 8:FOR J= 1TO 6:DM= I* I:PLOT 6,J,2,97,0,255:NEXT J,I 1590 PLOT 3,64,0:FOR I= 1TO 1100:NEXT 1600 PLOT 6,6,12,3,20,2:PRINT T$:PRINT "":PRINT :PRINT 1610 PRINT " THE OBJECT OF THIS GAME IS TO BOUNCE A BALL AROUND A PLAYING" 1620 PRINT " COURT AND COLLECT POINTS BY HITTING THE RED ON BLUE POINT" 1630 PRINT " SQUARES. IF THE BALL COMES TO REST ON ANY OF THE AREAS LABELED" 1640 PRINT " '-2', YOU ARE PENALIZED 2 POINTS. THE FIRST PLAYER TO GET 50" 1650 PRINT " POINTS IS THE WINNER." 1660 PRINT 1670 PRINT " PLAYERS ALTERNATE TURNS, AND AFTER EACH PLAYER HAS BOUNCED 5" 1680 PRINT " BALLS, THE DISPLAY IS RE-DRAWN AND A NEW ROUND BEGINS." 1690 PRINT 1700 PRINT " TO BOUNCE THE BALL, YOU MUST SPECIFY AN INITIAL HEIGHT (10 -" 1710 PRINT " 90 FT), THE INITIAL VELOCITY (1 - 500 FT/SEC) AND THE BALL'S" 1720 PRINT " BOUNCE COEFFICIENT (.1 - .85)." 1730 PRINT 1740 PRINT " THE BOUNCE COEFFICIENT IS THE RATIO OF THE VELOCITY OF THE" 1750 PRINT " BALL AFTER A BOUNCE TO THE VELOCITY BEFORE THE BOUNCE. FOR" 1760 PRINT " EXAMPLE, A SUPER-BALL HAS A BOUNCE COEFFICIENT OF ABOUT .8" 1770 PRINT " (A LARGER BOUNCE COEFFICIENT MEANS A HIGHER BOUNCE)." 1780 PRINT 1790 PRINT TAB( 14); 1800 OUT 8,255:PRINT "NOW PRESS [RETURN] TO BEGIN THE GAME " 1810 POKE 33278,0 1820 PLOT 15,3,51,25,6,0:KB= PEEK (33278) 1830 IF KB< > 13THEN 1820 1840 OUT 8,4:REM DISABLE KEYBOARD 1850 RETURN 1860 REM PLAY AGAIN? 1870 PLOT 6,3,3,5,10:PRINT "*************" 1880 PLOT 6,1- 5* (P= 2),14,3,5,13:PRINT "PLAYER"P" WINS" 1890 PLOT 15,6,3,3,5,15:PRINT "*************" 1900 PLOT 6,7,3,5,17:PRINT "CARE TO" 1910 OUT 8,255:PLOT 3,5,18:INPUT "PLAY AGAIN? ";A$:OUT 8,247 1920 IF LEFT$ (A$,1)= "Y"OR LEFT$ (A$,1)= "O"THEN 220 1930 IF LEFT$ (A$,1)< > "N"THEN PLOT 3,17,18:PRINT SPC( LEN (A$))"":GOTO 1910 1940 LOAD "MENU":RUN