home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / spiele / balloon.bas < prev    next >
Encoding:
BASIC Source File  |  1988-01-03  |  6.8 KB  |  105 lines

  1. 100 'Ballon Crazy for IBM PC/PCjr requires BASICA, Color Graphics adapter, and one joystick
  2. 110 DEFINT A-Z:RANDOMIZE TIMER:DIM BP$(3),MOBJ(452),X(49),Y(49)
  3. 120 DF=10
  4. 130 SCREEN 1:COLOR 9,0:KEY OFF:STRIG ON:PLAY"mf":CLS
  5. 140 GOSUB 280:X=100:HP=164:EY=Y+22
  6. 150 TX=3:LX=134:SKEW!=2.27:SP!=4:LIVES=4
  7. 160 GOSUB 740:PRINT"BALLOON C R A Z Y !":LOCATE 9,10:PRINT"/":LOCATE 8,11:PRINT"Do you need":LOCATE 9,11:PRINT"to adjust":LOCATE 10,11:PRINT"your joystick?":WHILE INKEY$<>"":WEND
  8. 170 A$=INKEY$:IF A$="" AND STRIG(1)=0 THEN 170 ELSE IF (ASC(A$+CHR$(0)) OR 32)=121 THEN GOSUB 600
  9. 180 CLS:PRINT"BALLOON C R A Z Y !":LOCATE 1,25:PRINT"Score:";SC!
  10. 190 FOR I=158 TO 174 STEP 8:PUT(I,0),TINY:NEXT:GOSUB 350
  11. 200 FOR ROW=20 TO 80 STEP 20:FOR COL=45 TO 255 STEP 15:PUT(COL,ROW),BALL:NEXT COL,ROW
  12. 210 PUT(X,Y),MAN:GET(X,Y)-(X+21,EY),MOBJ
  13. 220 IF BP<0 THEN GOSUB 380:GOTO 180 ELSE BY=BP*20+20:T$=BP$(BP):PTR=.5+RND(1)*LEN(T$):BX=(ASC(MID$(T$,PTR))-64)*15+30:T$=LEFT$(T$,PTR-1)+MID$(T$,PTR+1):BP$(BP)=T$:IF T$="" THEN BP=BP-1
  14. 230 PUT(BX,BY),BALL:BY=BY+SP!:PUT(BX,BY),BALL:IF BY>180 THEN 440
  15. 240 IF ABS(BY-HP)<SP! THEN IF ABS((BX-7)-X)<DF THEN Y=Y-13:PUT(BX,BY),BALL:PUT(X+7,Y),BALL,PSET:SOUND 30000,1:GET(X,Y)-(X+21,EY),MOBJ:HP=HP-13:FLOATERS=FLOATERS+1:SP!=SP!+.5:IF FLOATERS=7-BP THEN GOSUB 380:GOTO 210 ESLE 220
  16. 250 PUT(X,Y),MOBJ:NX=(STICK(0)-TX)*SKEW!:X=NX:IF NX<0 THEN X=0 ELSE IF NX>297 THEN X=297
  17. 260 PUT(X,Y),MOBJ
  18. 270 GOTO 230
  19. 280 READ XS,YS:E=(4+INT((XS+7)/8)*YS)/2:DIM MAN(E):MAN(0)=XS:MAN(1)=YS:FOR I=2 TO E:READ MAN(I):NEXT:Y=200-YS:MY=Y
  20. 290 READ XS,YS:E=(4+INT((XS+7)/8)*YS)/2:DIM POP(E):POP(0)=XS:POP(1)=YS:FOR I=2 TO E:READ POP(I):NEXT
  21. 300 READ XS,YS:E=(4+INT((XS+7)/8)*YS)/2:DIM FALL(E):FALL(0)=XS:FALL(1)=YS:FOR I=2 TO E:READ FALL(I):NEXT
  22. 310 READ XS,YS:E=(4+INT((XS+7)/8)*YS)/2:DIM BALL(E):BALL(0)=XS:BALL(1)=YS:FOR I=2 TO E:READ BALL(I):NEXT
  23. 320 READ XS,YS:E=(4+INT((XS+7)/8)*YS)/2:DIM XBALL(E):XBALL(0)=XS:XBALL(1)=YS:FOR I=2 TO E:READ XBALL(I):NEXT
  24. 330 READ XS,YS:E=(4+INT((XS+7)/8)*YS)/2:DIM TINY(E):TINY(0)=XS:TINY(1)=YS:FOR I=2 TO E:READ TINY(I):NEXT
  25. 340 RETURN
  26. 350 BP=3:FOR I=0 TO BP:BP$(I)="ABCDEFGHIJKLMNO":NEXT
  27. 360 RETURN
  28. 370 GOSUB 380:GOTO 220
  29. 380 FOR I=1 TO FLOATERS
  30. 390 PUT(X,MY),POP,PSET:PUT(X+7,MY-13,BALL:PUT(X+7,MY-18),XBALL:FOR J=0 TO 5:SOUND 100+J,.5:NEXT:PUT(X+7,MY-18),XBALL
  31. 400 IF I<FLOATERS THEN PUT(X+7,Y),BALL:PUT(X+7,MY-13),BALL
  32. 410 PUT(X,MY),MAN,PSET:FOR W=1 TO 5:NEXT:SC!=SC!+10:LOCATE 1,31:PRINT SC!:Y=Y+13:NEXT
  33. 420 Y=MY:GET(X,Y)-(X+21,EY),MOBJ:PUT(X,Y),MAN
  34. 430 SP!=4:HP=164:FLOATERS=0:RETURN
  35. 440 PUT(BX,BY),BALL:PUT(BX,BY-5),XBALL:FOR J=0 TO 5:SOUND 105-J,.5:NEXT:PUT(BX,BY-5),XBALL
  36. 450 PUT(X,MY),MAN:PUT(X,MY),FALL
  37. 460 IF FLOATERS=0 THEN 510
  38. 470 FOR I=1 TO FLOATERS
  39. 480 PUT(X+7,MY-13),BALL:PUT(X+7,MY-18),XBALL:FOR J=0 TO 5:SOUND 105-J,.5:NEXT:PUT(X+7,MY-18),XBALL
  40. 490 IF I<FLOATERS THEN PUT(X+7,Y),BALL:PUT(X+7,MY-13),BALL
  41. 500 FOR W=1 TO 5:NEXT:Y=Y+13:NEXT
  42. 510 NY=MY:S=-6:FOR I=X+5 TO 291 STEP 5:PUT(I-5,NY),FALL:NY=NY+S:IF NY<MY-18 OR NY>MY THEN NY=NY-S:S=-S
  43. 520 PUT(I,NY),FALL:SOUND 100+NY,.5:NEXT
  44. 530 NX=I-5:FOR I=NY-16 TO 0 STEP -16:PUT(NX,I+16),FALL:PUT(NX,I),FALL:SOUND 5000-I*5,.1:NEXT
  45. 540 PUT(NX,I+16),FALL
  46. 550 LIVES=LIVES-1:PUT(150+LIVES*8,0),TINY:IF LIVES>0 THEN PUT(X,MY),MAN:GOSUB 420:GOTO 210
  47. 560 CLS:FOR I=0 TO 49:X(I)=4+15*INT(20*RND(1)):Y(I)=18*INT(10*RND(1)):PUT(X(I),Y(I)),BALL,PSET:NEXT
  48. 570 FOR I=0 TO 49:PUT(X(I)-4,Y(I)),XBALL,PSET:SOUND 100+5*RND(1),.2:SOUND 3000,.2:PUT(X(I)-4,Y(I)),XBALL:NEXT
  49. 580 LOCATE 12,16:PRINT"GAME OVER":LOCATE 13,17-LEN(STR$(SC!))/2:PRINT"Score:";SC!:LOCATE 14,15:PRINT"Press Button"
  50. 590 A$=INKEY$:IF INKEY$="" AND STRIG(1)=0 THEN 590 ELSE RUN
  51. 600 GOSUB 740
  52. 610 LOCATE 9,10:PRINT"/":LOCATE 8,11:PRINT"Move stick to":LOCATE 9,11:PRINT"far left,":LOCATE 10,11:PRINT"press button!"
  53. 620 TX=STICK(0):IF STRIG(1)<>0 THEN 640
  54. 630 FOR I=10 TO 0 STEP -1:C=-C*(C<3)+1:LINE(30+I,40)-(I,70),C:LINE-(30+I,100),C:NEXT:GOTO 620
  55. 640 PUT(50,63),POP,PSET:PUT(57,54),XBALL,PSET:FOR J=1 TO 15:SOUND 100+J,.5:NEXT
  56. 650 CLS:PUT(50,63),MAN:LOCATE 9,10:PRINT"/":LOCATE 8,11:PRINT"Gimme another":LOCATE 9,11:PRINT"balloon!"
  57. 660 FOR J=1 TO 2000:NEXT
  58. 670 PUT(57,0),BALL:FOR I=2 TO 50 STEP 2:WAIT &H3DA,8:PUT(57,I-2),BALL:WAIT &H3DA,8:PUT(57,I),BALL:NEXT
  59. 680 LOCATE 8,11:PRINT"Move stick to ":LOCATE 9,11:PRINT"far right,":LOCATE 10,11:PRINT"press button!"
  60. 690 LX=STICK(0):IF STRIG(1)<>0 THEN 710
  61. 700 FOR I=10 TO 0 STEP -1:C=-C*(C<3)+1:LINE(289-I,40)-(319-I,70),C:LINE-(289-I,100),C:NEXT:GOTO 690
  62. 710 FOR I=1 TO 5:PUT(57,45),XBALL,PSET:PUT(50,63),POP,PSET:FOR J=1 TO 4:SOUND 100+J,.5:NEXT:PUT(57,50),BALL,PSET:PUT(50,63),MAN,PSET:FOR J=1 TO 100:NEXT:NEXT
  63. 720 SKEW!=297/ABS(LX-TX)
  64. 730 RETURN
  65. 740 CLS:PUT(0,63),MAN:PUT(57,0),BALL:FOR I=2 TO 50 STEP 2:PUT(57,I-2),BALL:PUT(57,I),BALL:PUT(I-2,63),MAN:PUT(I,63),MAN,PSET:NEXT:RETURN
  66. 750 DATA &h2c,&h17,&h0,&h5,&h0,&h0,&h4015,&h0
  67. 760 DATA &h0,&h5055,&h0,&h0,&h30cf,&h0,&h300,&hcc3
  68. 770 DATA &h0,&h300,&hacaa,&h0,&h0,&ha0a0,&h0,&h0
  69. 780 DATA &h802a,&h0,&h0,&hf,&h0,&he00,&heeee,&hc0
  70. 790 DATA &hfb00,&hbbbb,&hb0,&hc003,&he0ee,&h3c,&hf,&h803b
  71. 800 DATA &hf,&hff,&hc02e,&hf00f,&h0,&h4015,&h0,&h0
  72. 810 DATA &ha0aa,&h0,&h0,&ha0aa,&h0,&h200,&ha8a0,&h0
  73. 820 DATA &h200,&ha8a0,&h0,&ha00,&h2a80,&h0,&ha37,&h2a80
  74. 830 DATA &hc00d,&hdadd,&h3ac0,&h7077,&h7737,&h1d40,&hc0dd,&ha800
  75. 840 DATA &h2c,&h17,&h800,&h5,&h0,&ha000,&h4015,&h0
  76. 850 DATA &h8003,&h5055,&h0,&hc003,&hc3,&h0,&h30f,&h3ccf
  77. 860 DATA &h0,&h30f,&hacaa,&h0,&hc003,&ha0a0,&h0,&hf003
  78. 870 DATA &h802a,&h0,&hfc00,&hf,&h0,&h2e00,&heeee,&hc0
  79. 880 DATA &hb00,&hbbbb,&hbc,&h0,&he0ee,&hff,&h0,&h803b
  80. 890 DATA &hf,&h0,&hc02e,&hc003,&h0,&h4015,&hc003,&h0
  81. 900 DATA &ha0aa,&hc000,&h0,&ha0aa,&h0,&h200,&ha8a0,&h0
  82. 910 DATA &h200,&ha8a0,&h0,&ha00,&h2a80,&h0,&ha37,&h2a80
  83. 920 DATA &hc00d,&hdadd,&h3ac0,&h7077,&h7737,&h1d40,&hc0dd,&ha800
  84. 930 DATA &h38,&h16,&h0,&h0,&h0,&h0,&h0,&h0
  85. 940 DATA &h0,&h0,&h1400,&h0,&h0,&h0,&h55,&h0
  86. 950 DATA &h0,&h55f1,&h4f,&h0,&hf303,&hcf3c,&hc0,&hf00
  87. 960 DATA &hf30c,&hf0f0,&h0,&hf3c,&hf0aa,&h3c,&h3c00,&h820e
  88. 970 DATA &h3cb0,&h0,&h23f,&h8028,&hfc,&hf00,&hffc0,&hf003
  89. 980 DATA &h0,&hfb03,&hbfbb,&h0,&h0,&hee3e,&hec,&h0
  90. 990 DATA &h300,&h80bb,&h0,&h0,&hee00,&h0,&h7700,&h0
  91. 1000 DATA &hbb,&hdd00,&hc01d,&h5500,&h300,&h774,&ha240,&h8aaa
  92. 1010 DATA &hd001,&he201,&haaaa,&h8baa,&h40,&haa7a,&haaaa,&had
  93. 1020 DATA &h1a00,&h820a,&ha4a0,&h0,&h4,&h0,&h10,&ha002
  94. 1030 DATA &h14,&hd,&ha802,&h2a00,&h80be,&hafaa,&haaa0,&ha0af
  95. 1040 DATA &hafaa,&haaa0,&ha0af,&hae2a,&h2a80,&h80aa,&haa0a,&h200
  96. 1050 DATA &ha8,&ha000,&h0,&h40,&h1,&h200,&ha8
  97. 1060 DATA &h26,&h12,&h2020,&h20,&h0,&h2800,&h0,&h0
  98. 1070 DATA &h2828,&h800,&h2028,&ha8,&h2a00,&ha002,&h28,&h8202
  99. 1080 DATA &h2080,&h202,&ha80,&h2000,&h0,&h8,&ha000,&ha088
  100. 1090 DATA &h8,&h8028,&h2880,&h0,&h88a2,&haa0,&h200,&h808a
  101. 1100 DATA &ha000,&h2800,&h0,&h2000,&h0,&h200,&h8000,&h0
  102. 1110 DATA &h80a,&ha0,&h400,&h2000,&h0,&h10,&h0,&h0
  103. 1120 DATA &he,&ha,&h1,&hc00f,&hc00e,&h3,&hb03b,&hccce
  104. 1130 DATA &h1,&h800a,&ha028,&h1450,&h30cf
  105.