home *** CD-ROM | disk | FTP | other *** search
/ Share Gallery 1 / share_gal_1.zip / share_gal_1 / GAS / GAS02.ZIP / BREAKOUT.BAS < prev    next >
BASIC Source File  |  1980-01-01  |  5KB  |  166 lines

  1. 10 REM ibm pc spinout
  2. 20 REM K.R. Sloan, Jr.
  3. 30 REM 1 January 1982
  4. 40 DIM BALL[14]
  5. 50 DIM PADDLE[9]
  6. 60 DIM BRICK[20,4]
  7. 65 RANDOMIZE(VAL(RIGHT$(TIME$,2)))
  8. 70 KEY OFF:PLAY "mb"
  9. 80 LOUD=0
  10. 90 BRUNO$="l16o2b-o3cl8ddc+16do2fp1"
  11. 110 T=8:B=188:L=8:R=308
  12. 120 BH=8:BW=(R-L)/20
  13. 130 BT=T+(BH*4):BB=BT+(BH*4)
  14. 135 CLS
  15. 140 LOCATE 7,12: PRINT "Welcome to Spinout";
  16. 150 LOCATE 8,12: PRINT "ArchMach Version 1";
  17. 160 LOCATE 12,1:PRINT "Choose a key to move the paddle right";
  18. 170 R$=INKEY$:IF R$="" GOTO 170
  19. 180 LOCATE 12,1:PRINT "Choose a key to move the paddle left ";
  20. 190 L$=INKEY$:IF L$="" GOTO 190
  21. 200 IF R$=L$ GOTO 160
  22. 210 LOCATE 12,1:PRINT "Choose a key to serve                ";
  23. 220 S$=INKEY$:IF S$="" GOTO 220
  24. 230 IF (R$=S$)OR(L$=S$) GOTO 160
  25. 240 LOCATE 12,1:PRINT "Choose a key to turn noise on/off   ";
  26. 250 N$=INKEY$:IF N$="" GOTO 250;
  27. 260 IF (R$=N$)OR(L$=N$)OR(S$=N$) GOTO 160
  28. 270 LOCATE 12,1:INPUT;"How good are you at this game (1-10)";SKILL
  29. 275 IF SKILL<1 GOTO 270
  30. 276 IF SKILL>10 GOTO 270
  31. 280 SKILL=SKILL/10
  32. 290 MAXVX=6+(4*SKILL):MAXVY=MAXVX
  33. 295 G=SKILL/5
  34. 296 DEF SEG=0:EQUIPMENT%=PEEK(&H410) ':POKE &H410,EQUIPMENT%-&H10
  35. 297 WIDTH 40:WIDTH 80:SCREEN 0,0,0:SCREEN 1:COLOR 1,0:CLS
  36. 300 LINE (0,0)-(319,199),0,BF
  37. 310 FOR BY=0 TO 3
  38. 320 FOR BX=0 TO 19
  39. 330 BRICK[1+BX,1+BY]=10+50*BY
  40. 340 LINE (L+2+(BW*BX),BT+2+(BH*BY))-STEP (BW-4,BH-4),2+INT(BY/2),BF
  41. 350 NEXT BX,BY
  42. 360 SCORE = 0
  43. 370 LINE (L,T)-(R,T)
  44. 380 LINE -(R,B)
  45. 390 LINE -(L,B)
  46. 400 LINE -(L,T)
  47. 410 X=160:Y=100
  48. 420 LASTD$=""
  49. 430 FOR I=1 TO 5
  50. 440 FOR J=1 TO 5
  51. 450 IF ((I-3)*(I-3))+((J-3)*(J-3))<6.25 THEN PSET (X-3+I,Y-3+J)
  52. 460 NEXT J,I
  53. 470 GET (X-2,Y-2)-(X+2,Y+2),BALL
  54. 480 PL=150:PR=170:PY=B-20
  55. 490 LINE (PL,PY)-(PR,PY),1,BF
  56. 500 GET(PL,PY)-(PR,PY),PADDLE
  57. 510 REM main loop
  58. 520 IF LOUD=1 THEN PLAY BRUNO$
  59. 530 FOR SHOT=1 TO 4
  60. 540 LOCATE 25,1
  61. 550 PRINT USING "#####";SCORE;
  62. 560 LOCATE 25,8
  63. 570 PRINT USING "Ball #  ";SHOT;
  64. 580 LOCATE 25,18
  65. 590 PRINT "K.R.Sloan,Jr.  1Jan82";
  66. 600 IF X>R THEN X=R
  67. 610 IF X<L THEN X=L
  68. 620 IF Y<T THEN Y=T
  69. 630 IF Y>B THEN Y=B
  70. 640 PUT(X-2,Y-2),BALL
  71. 650 X=L+RND(X)*(R-L)
  72. 660 Y=B-10
  73. 670 PUT(X-2,Y-2),BALL
  74. 680 VX=6*RND(1)-3
  75. 690 VY=-5-2*RND(1)
  76. 700 SPIN=0
  77. 710 FAST=1+SKILL
  78. 720 GOSUB 1410 `MOVE PADDLE
  79. 730 IF D$<>S$ GOTO 720
  80. 740 OX=X:OY=Y:OBX=BX:OBY=BY
  81. 750 OVX=VX:OVY=VY
  82. 760 VX=OVX-(SPIN*OVY*.05):VY=OVY+(SPIN*OVX*.05)+G
  83. 761 SPIN=SPIN*.9999
  84. 770 IF VX>MAXVX THEN VX=MAXVX
  85. 771 IF VY>MAXVY THEN VY=MAXVY
  86. 780 IF VX<-MAXVX THEN VX=-MAXVX
  87. 781 IF VY<-MAXVY THEN VY=-MAXVY
  88. 790 X=X+VX:Y=Y+VY
  89. 800 BX=INT((X-L)/BW)
  90. 810 IF BX>19 THEN BX=19
  91. 820 IF BX<0 THEN BX=0
  92. 830 BY=INT((Y-BT)/BH)
  93. 840 IF BY>3 GOTO 1050
  94. 850 IF BY<0 GOTO 1050
  95. 860 IF BRICK[1+BX,1+BY]<=0 GOTO 1050
  96. 870 IF BY>1 GOTO 890
  97. 880 VY=VY*FAST
  98. 890 IF (OBX<>BX)THEN VX=-VX
  99. 900 IF (OBY<>BY)THEN VY=-VY
  100. 910 SCORE=SCORE+BRICK[1+BX,1+BY]
  101. 920 SOUND 440,2*LOUD
  102. 930 PUT(OX-2,OY-2),BALL,XOR
  103. 940 LINE (L+2+(BW*BX),BT+2+(BH*BY))    -STEP (BW-4,BH-4),0,BF
  104. 950 PUT(OX-2,OY-2),BALL,XOR
  105. 960 BRICK[1+BX,1+BY]=-BRICK[1+BX,1+BY]
  106. 970 IF SCORE<6800 GOTO 1050
  107. 972 LOCATE 25,1
  108. 974 PRINT USING "#####";SCORE;
  109. 980 FOR FLASH=1 TO 8
  110. 990 COLOR FLASH,.5+RND(FLASH)
  111. 1000 PLAY "mfaemb"
  112. 1010 NEXT FLASH
  113. 1040 GOTO 1340
  114. 1050 IF X<=L THEN X=L+L-X:VX=-VX:VY=VY+SPIN:SOUND 600,2*LOUD
  115. 1060 IF X>=R THEN X=R+R-X:VX=-VX:VY=VY-SPIN:SOUND 1200,2*LOUD
  116. 1070 IF Y<=T THEN Y=T+T-Y:VY=-VY:VX=VX-SPIN:SOUND 880,2*LOUD
  117. 1080 IF Y>=B GOTO 1310
  118. 1090 IF (Y<PY)OR(OY>PY) THEN GOTO 1270
  119. 1100 IF ((PL-2)<X)AND(X<(PR+2)) GOTO 1130
  120. 1110 IF ((PL-2)<OX)AND(OX<(PR+2)) GOTO 1130
  121. 1120 GOTO 1270
  122. 1130 Y=PY+PY-Y
  123. 1140 SOUND 300,5*LOUD
  124. 1150 IF (RND(1)*2)>SKILL GOTO 1210
  125. 1160 BX=INT(RND(1)*19.99):BY=INT(RND(1)*3.99):
  126. 1170 IF BRICK[1+BX,1+BY]>0 GOTO 1210
  127. 1180 BRICK[1+BX,1+BY]=-BRICK[1+BX,1+BY]
  128. 1190 LINE (L+2+(BW*BX),BT+2+(BH*BY)) -STEP (BW-4,BH-4),2+INT(BY/2),BF
  129. 1200 SCORE=SCORE-BRICK[1+BX,1+BY]
  130. 1210 LOCATE 25,1
  131. 1220 PRINT SCORE;
  132. 1230 VY=-VY
  133. 1240 MISS=(X-(PL+PR)/2)/(PL-PR)
  134. 1250 VX=VX+VY*MISS*SKILL*5
  135. 1260 SPIN=(SPIN*SKILL)+MISS*SKILL
  136. 1270 PUT(X-2,Y-2),BALL,XOR
  137. 1280 PUT(OX-2,OY-2),BALL,XOR
  138. 1290 GOSUB 1410 'move paddle
  139. 1300 GOTO 740
  140. 1310 REM lost ball
  141. 1320 IF LOUD=1 THEN SOUND 200,20
  142. 1330 NEXT SHOT
  143. 1340 REM End of Game
  144. 1341 'DEF SEG=0:POKE &H410,125:WIDTH 40:WIDTH 80:SCREEN 0,0,0
  145. 1342 WIDTH 80:SCREEN 0,0,0
  146. 1350 LOCATE 12,20
  147. 1360 PRINT "Do you want to play another game?"
  148. 1370 D$=INKEY$: IF D$="" THEN 1370
  149. 1380 IF D$="y" OR D$="Y" THEN RUN
  150. 1390 IF D$="n" OR D$="N" THEN CLS:RUN "MENU.PGM"
  151. 1400 GOTO 1360
  152. 1410 REM move paddle routine
  153. 1420 OPL=PL
  154. 1430 D$=INKEY$
  155. 1440 IF D$=N$ THEN LOUD=-1*LOUD+1
  156. 1450 IF D$=L$ THEN PL=PL-5:GOTO 1430
  157. 1460 IF D$=R$ THEN PL=PL+5:GOTO 1430
  158. 1470 IF PL<L THEN PL=L
  159. 1480 IF PL>(R-20) THEN PL=R-20
  160. 1490 IF OPL=PL THEN RETURN
  161. 1500 PR=PL+20
  162. 1510 PUT (OPL,PY),PADDLE,XOR
  163. 1520 PUT(PL,PY),PADDLE,XOR
  164. 1530 RETURN
  165. HEN PL=R-20
  166. 1