home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib40a.dsk / FEBRUARY.1991 / BLOCK.DEMO.bas < prev    next >
BASIC Source File  |  2023-02-26  |  3KB  |  101 lines

  1. 10  REM  *************************
  2. 20  REM  * BLOCK.DEMO            *
  3. 30  REM  * BY DAVID HARRIS       *
  4. 40  REM  * COPYRIGHT(C) 1991     *  
  5. 50  REM  * MINDCRAFT PUBL. CORP. *
  6. 60  REM  * CONCORD, MA 01742     *
  7. 70  REM  ************************* 
  8. 80 :
  9. 90 : REM  ** MAIN PROGRAM **
  10. 100 :
  11. 110  GOSUB 200: REM  INITIALIZE
  12. 120  VTAB 22: PRINT "SHOTS = ";NSHOTS;"    HITS = ";HITS
  13. 130  IF T/5 =  INT(T/5)  THEN  GOSUB 360: REM  MOVE PLAYER
  14. 140  IF T/S =  INT(T/S)  THEN  GOSUB 450: REM  MOVE TARGET
  15. 150  IF SHOT  THEN  GOSUB 540: REM  MOVE BULLET
  16. 160  IF  PEEK( -16384) >127  THEN  GOSUB 620: REM  HANDLE KEYPRESS
  17. 170 T = T +1
  18. 180  GOTO 120
  19. 190 :
  20. 200 : REM  ** INITIALIZE **
  21. 210 :
  22. 220  IF  PEEK(768) < >165  OR  PEEK(769) < >255  THEN  PRINT  CHR$(4);"BLOAD BLOCK"
  23. 230  HOME : HGR 
  24. 240 PX = 18
  25. 250 TX = 35
  26. 260 S =  INT(8 * RND(1)) +5
  27. 270 SHOT = 0:NSHOTS = 0:HITS = 0
  28. 280 DIR = 0
  29. 290  POKE 7,96: POKE 255,209: REM  FOR BLOCK SHAPE ROUTINE
  30. 300  FOR LOOP = 1 TO 59: READ X: POKE 24575 +LOOP,X: NEXT LOOP
  31. 310  POKE  -16368,0
  32. 320  VTAB 24: PRINT "    LEFT AND RIGHT ARROWS MOVE, SPACE BAR STOPS, RETURN FIRES, 'ESC' QUITS";
  33. 330  VTAB 5: PRINT 
  34. 340  RETURN 
  35. 350 :
  36. 360 : REM  ** MOVE PLAYER **
  37. 370 :
  38. 380  POKE 6,0: POKE 251,4: POKE 252,10: POKE 254,150
  39. 390  IF DIR =  -1  AND PX >0  THEN PX = PX -1
  40. 400  IF DIR = 1  AND PX <36  THEN PX = PX +1
  41. 410  POKE 253,PX
  42. 420  CALL 768
  43. 430  RETURN 
  44. 440 :
  45. 450 : REM  ** MOVE TARGET **
  46. 460 :
  47. 470  POKE 6,44: POKE 251,3: POKE 252,5: POKE 254,0
  48. 480 TX = TX -1
  49. 490  IF TX = 0  THEN  POKE 253,1: POKE 255,81: CALL 768: POKE 255,209:TX = 36:S =  INT(8 * RND(1)) +5
  50. 500  POKE 253,TX
  51. 510  CALL 768
  52. 520  RETURN 
  53. 530 :
  54. 540 : REM  ** MOVE BULLET **
  55. 550 :
  56. 560  POKE 6,40: POKE 251,1: POKE 252,4: POKE 253,SX: POKE 254,SY
  57. 570  CALL 768
  58. 580 SY = SY -2
  59. 590  IF SY <5  THEN  POKE 255,81: CALL 768: POKE 255,209:SHOT = 0: IF SX = TX +1  OR SX = TX +2  THEN  GOSUB 820: REM  HIT TARGET
  60. 600  RETURN 
  61. 610 :
  62. 620 : REM  ** HANDLE KEYPRESS **
  63. 630 :
  64. 640 X =  PEEK( -16384)
  65. 650  IF X >127  THEN X = X -128
  66. 660  POKE  -16368,0
  67. 670  IF X = 8  THEN DIR =  -1: REM  LEFT
  68. 680  IF X = 21  THEN DIR = 1: REM  RIGHT
  69. 690  IF X = 32  THEN DIR = 0: REM  SPACE BAR = STOP
  70. 700  IF X = 27  THEN  GOTO 740: REM  ESC = QUIT
  71. 710  IF X = 13  AND SHOT = 0  THEN SX = PX +1:SY = 145:SHOT = 1:NSHOT = NSHOT +1: REM  RETURN = SHOOT
  72. 720  RETURN 
  73. 730 :
  74. 740 : REM  ** QUIT **
  75. 750 :
  76. 760  TEXT : HOME 
  77. 770  PRINT "#SHOTS FIRED = ";NSHOTS
  78. 780  IF NSHOTS >0  THEN  PRINT "HIT PERCENTAGE = ";(HITS/NSHOTS) *100
  79. 790  PRINT : PRINT "GOODBYE..."
  80. 800  END 
  81. 810 :
  82. 820 : REM  ** HIT TARGET **
  83. 830 :
  84. 840 HITS = HITS +1
  85. 850  POKE 6,44: POKE 251,3: POKE 252,5: POKE 253,TX: POKE 254,0: POKE 255,81
  86. 860  PRINT  CHR$(7);
  87. 870  FOR LOOP = 1 TO 11
  88. 880  CALL 768
  89. 890  FOR DLAY = 1 TO 80: NEXT DLAY
  90. 900  NEXT LOOP: POKE 255,209
  91. 910 TX = 36:S =  INT(8 * RND(1)) +5
  92. 920  RETURN 
  93. 930 :
  94. 940 : REM  ** BLOCK SHAPE DATA **
  95. 950 :
  96. 960  REM  PLAYER
  97. 970  DATA  0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,124,0,0,0,126,1,0,0,127,3,0,0,127,3,0,0,70,1,0
  98. 980  REM  BULLET
  99. 990  DATA  56,56,0,0
  100. 1000  REM  TARGET
  101. 1010  DATA  112,1,0,120,3,0,124,7,0,102,12,0,99,24,0