home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 112 / SGDS 112.2mg / SDGS.112 / B / CITYP.BAS3 (.txt) next >
Encoding:
Applesoft BASIC Source Code  |  1991-01-07  |  4.9 KB  |  204 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 0  REM  ********************
  2. 1  REM  * :::::::::::::::: *
  3. 2  REM  * :City Protector: *
  4. 3  REM  * :::::::::::::::: *
  5. 4  REM  * By: Russ Nielson *
  6. 5  REM  *                  *
  7. 6  REM  * Date:  Nov. 1989 *
  8. 7  REM  *                  *
  9. 8  REM  ********************
  10. 9  REM 
  11. 10  IF  PEEK(104) < >64  THEN  POKE 103,1: POKE 104,64: POKE 16384,0: PRINT  CHR$(4)"RUN CITYP.BAS3": REM BASIC= $4000
  12. 12  ONERR  GOTO 910
  13. 13  CALL 2281: REM  GS COLOR
  14. 14 D$ =  CHR$(4):PK = 49152
  15. 15  REM 
  16. 16  REM  ::::::::::::::
  17. 17  REM  : LOAD FILES :
  18. 18  REM  ::::::::::::::
  19. 19  REM 
  20. 20 B$ = "BLOADCITYP."
  21. 25  PRINT D$"BLOADTITLE.SCREEN"
  22. 26  POKE  -16297,0: POKE  -16300,0: POKE  -16302,0: POKE  -16304,0
  23. 30  PRINT D$B$"OBJ"
  24. 40  PRINT D$B$"SHAPES"
  25. 50  PRINT D$"BLOADHIRES.SCRN.TABL,A$8000"
  26. 70  HCOLOR= 0
  27. 89  REM 
  28. 90  REM  :::::::::::::
  29. 91  REM  : VARIABLES :
  30. 92  REM  :::::::::::::
  31. 93  REM 
  32. 100 GAME = 28672
  33. 110 CO = 36359: REM control
  34. 120 SD = 36728: REM scoredata
  35. 130 LE = 36383: REM length
  36. 140 P1 = 36387: REM pitch1
  37. 150 P2 = 36388: REM pitch2
  38. 160 PD = 36386: REM pdist
  39. 170 RC = 36392: REM rtn code
  40. 190 SO = 28824: REM sound
  41. 191 WI = 29163: REM wipescreen
  42. 192 BS = 29957: REM first draw
  43. 193 FD = 30033: REM blink stars
  44. 196  PRINT D$"PR#0": GOSUB 1000
  45. 197  GOSUB 1080
  46. 199  REM 
  47. 200  REM  :::::::::::::::
  48. 201  REM  : GET CONTROL :
  49. 202  REM  :::::::::::::::
  50. 203  REM 
  51. 210  POKE 49168,0: POKE CO,2
  52. 220  POKE P1,50: POKE P2,50
  53. 225  POKE PD,1: POKE LE,20
  54. 228  CALL SO: GET C$
  55. 230  IF C$ = "K"  OR C$ = "k"  THEN  POKE CO,0
  56. 240  IF C$ = "J"  OR C$ = "j"  THEN  POKE CO,1
  57. 245  IF C$ = "I"  OR C$ = "i"  THEN 1500
  58. 250  IF  PEEK(CO) = 2  THEN 220
  59. 253  REM 
  60. 254  REM  :::::::::::::
  61. 255  REM  : PLAY GAME :
  62. 256  REM  :::::::::::::
  63. 257  REM 
  64. 260  PRINT D$B$"PIC3": CALL GAME
  65. 269  REM 
  66. 270  REM  :::::::::::::::::
  67. 271  REM  : WHAT HAPPENED :
  68. 272  REM  :::::::::::::::::
  69. 273  REM 
  70. 280 R =  PEEK(RC)
  71. 290  IF R  THEN  CALL 803: TEXT : HOME : PRINT D$"bye"
  72. 299  REM 
  73. 300  REM  :::::::::::::
  74. 301  REM  : GET SCORE :
  75. 302  REM  :::::::::::::
  76. 303  REM 
  77. 310 SC = 0:Y = 1: FOR D = SD +5 TO SD  STEP  -1:SC = SC +( PEEK(D) *Y):Y = Y *10: NEXT 
  78. 394  REM  :::::::::::::::
  79. 395  REM  : HIGH SCORES :
  80. 396  REM  :::::::::::::::
  81. 397  REM 
  82. 400 F$ = "CITYP.SCORES"
  83. 401  POKE 48688,51
  84. 402  POKE 48689,9
  85. 403  CALL WI
  86. 405  INVERSE : VTAB 2: HTAB 3: PRINT  SPC( 13)"HIGH SCORES" SPC( 12);: NORMAL 
  87. 406  CALL FD: FOR T = 1 TO 300: CALL BS: NEXT : CALL FD
  88. 410  PRINT D$"OPEN"F$: PRINT D$"READ"F$
  89. 420  FOR D = 1 TO 10: INPUT HN$(D),HS(D): NEXT 
  90. 430  PRINT D$"CLOSE"
  91. 440  GOTO 460
  92. 450  FOR P = 1 TO 10: VTAB P +3: HTAB 3: PRINT  SPC( 35): VTAB P +3: HTAB 3 -(P = 10): PRINT P". "HN$(P);: HTAB 30: PRINT HS(P): NEXT : RETURN 
  93. 460  GOSUB 450
  94. 465  VTAB 15: HTAB 14: PRINT "Score: "SC
  95. 470 PL = 0: FOR CK = 1 TO 10: IF SC > = HS(CK)  THEN PL = CK: GOTO 530
  96. 480  NEXT 
  97. 490  VTAB 17: HTAB 3: PRINT "Sorry, No High Score This Time!!!"
  98. 500  GOTO 750
  99. 530  RESTORE : FOR R = 1 TO 10: READ X$(R): NEXT : DATA  First,Second,Third,Fourth,Fifth,Sixth,Seventh,Eighth,Ninth,Tenth
  100. 540  VTAB 17: HTAB 3: PRINT "RANK: "X$(PL)"!!!";: IF (PL <4)  THEN  PRINT "  Excellent!!!"
  101. 550  VTAB 18: HTAB 3: PRINT "Name: ____________________"
  102. 560 V = 18:H = 1:N$ = ""
  103. 565  POKE 49168,0
  104. 570  GOSUB 810
  105. 580  IF (X = 13  OR X = 8)  AND H = 1  THEN 570
  106. 590  IF X = 8  AND H = 2  THEN H = 1:N$ = "": VTAB V: HTAB H +8: PRINT "_";: GOSUB 650: GOTO 570
  107. 600  IF X = 8  THEN N$ =  LEFT$(N$, LEN(N$) -1):H = H -1: VTAB V: HTAB H +8: PRINT "_";: GOSUB 650: GOTO 570
  108. 610  IF X = 13  THEN 660
  109. 620  IF  LEN(N$) >20  THEN  POKE P1,250: POKE P2,251: POKE LE,11: POKE PD,1: CALL SO: GOTO 570
  110. 630  VTAB V: HTAB H +8: PRINT X$;
  111. 640 N$ = N$ +X$:H = H +1: GOTO 570
  112. 650  POKE P1,230: POKE P2,229: POKE LE,6: POKE PD,1: CALL SO: RETURN 
  113. 654  REM  ::::::::::::::::::::
  114. 655  REM  : PLACE HIGH SCORE :
  115. 656  REM  ::::::::::::::::::::
  116. 657  REM 
  117. 660  FOR PC = 10 TO PL  STEP  -1
  118. 670 XN$(PC) = HN$(PC -1):XS(PC) = HS(PC -1): NEXT 
  119. 680  FOR PC = PL TO 10:HN$(PC) = XN$(PC):HS(PC) = XS(PC): NEXT 
  120. 690 HS(PL) = SC:HN$(PL) = N$
  121. 693  REM 
  122. 694  REM  :::::::::::::::
  123. 695  REM  : ON THE FILE :
  124. 696  REM  :::::::::::::::
  125. 697  REM 
  126. 700  PRINT D$"DELETE"F$: PRINT D$"OPEN"F$
  127. 710  PRINT D$"WRITE"F$
  128. 720  FOR D = 1 TO 10: PRINT HN$(D): PRINT HS(D): NEXT 
  129. 730  PRINT D$"CLOSE"
  130. 735  GOSUB 450
  131. 739  REM 
  132. 740  REM  ::::::::::::::
  133. 741  REM  : PLAY AGAIN :
  134. 742  REM  ::::::::::::::
  135. 743  REM 
  136. 750  CALL FD: FOR Z = 1 TO 700 +(400 *(PL <1)): CALL BS: NEXT 
  137. 753  CALL WI
  138. 755  INVERSE : VTAB 9: HTAB 14: PRINT " PLAY AGAIN? ": NORMAL : CALL FD
  139. 756  CALL BS
  140. 757  IF  PEEK(PK) <128  THEN 756
  141. 760  GET Z$: IF Z$ = "N"  OR Z$ = "n"  THEN R = 1: GOTO 290
  142. 770  IF Z$ = "Y"  OR Z$ = "y"  THEN  PRINT D$"BLOADTITLE.SCREEN": GOTO 70
  143. 780  GOTO 756
  144. 800  REM 
  145. 810  REM  ::::::::::::::::
  146. 811  REM  : BLINK CURSOR :
  147. 812  REM  ::::::::::::::::
  148. 813  REM 
  149. 820  VTAB V: HTAB H +8: PRINT " ";: REM  1 SPACE
  150. 830  FOR TI = 1 TO 15: IF  PEEK(PK) <128  THEN  NEXT 
  151. 840  VTAB V: HTAB H +8: PRINT "_";: REM  NO SPACES
  152. 850  FOR TI = 1 TO 15: IF  PEEK(PK) <128  THEN  NEXT 
  153. 860  IF  PEEK(PK) <128  THEN 820
  154. 870  GET X$:X =  ASC(X$): RETURN 
  155. 900  REM  ::::::::::::::
  156. 901  REM  : ERROR TRAP :
  157. 902  REM  ::::::::::::::
  158. 903  REM 
  159. 910  RESUME 
  160. 999  REM 
  161. 1000  REM  ::::::::::::::::::::
  162. 1001  REM  : POKE STAR DELAYS :
  163. 1002  REM  ::::::::::::::::::::
  164. 1003  REM 
  165. 1010  FOR P = 1 TO 34
  166. 1020 R =  INT( RND(1) *6) +1
  167. 1030  POKE 36400 +P,R
  168. 1040  POKE 36434 +P,R
  169. 1050  POKE 36468 +P,P +3
  170. 1060  NEXT : RETURN 
  171. 1069  REM 
  172. 1070  REM  ::::::::::::::::
  173. 1071  REM  : INSTRUCTIONS :
  174. 1072  REM  ::::::::::::::::
  175. 1073  REM 
  176. 1080  HOME : INVERSE 
  177. 1090  VTAB 1: HTAB 11: PRINT "   INSTRUCTIONS   ": PRINT 
  178. 1100  NORMAL : PRINT : PRINT "EVIL SKY MACHINES ARE ATTACKING INNOCENTCITIES. YOUR JOB IS TO PROTECT THESE    CITIES BY BLOCKING THE RED AND BLUE"
  179. 1110  PRINT "BOMBS. DON'T HIT THE WHITE BOMBS BECAUSETHEY WILL DAMAGE YOU AND AFTER THREE    HITS, YOU WILL CRASH DOWN ON THE LAND   BELOW. THE MORE CITIES YOU CAN KEEP"
  180. 1120  PRINT "ALIVE, THE MORE POINTS YOU WILL EARN.   THE RED AND BLUE BOMBS ARE WORTH 100    POINTS."
  181. 1130  PRINT : PRINT "ON THE TITLE SCREEN. PRESS (J) TO PLAY  THE GAME WITH A JOYSTICK OR PRESS (K)   TO PLAY WITH THE KEYBOARD."
  182. 1135  PRINT 
  183. 1140  PRINT "WHEN USING THE KEYBOARD, THE ARROWS MOVEYOU LEFT AND RIGHT AND THE SPACEBAR     STOPS. (P) PAUSES THE GAME AND <ESC>    QUITS THE GAME."
  184. 1150  PRINT : PRINT "PRESS ANY KEY TO CONTINUE...";
  185. 1490  RETURN 
  186. 1500  REM  ::::::::::::::::
  187. 1501  REM  : FLIP SCREENS :
  188. 1502  REM  ::::::::::::::::
  189. 1510  TEXT 
  190. 1520  POKE P1,100: POKE P2,100
  191. 1530  POKE LE,10: CALL SO
  192. 1540  POKE 49168,0
  193. 1610  IF  PEEK(49152) <128  THEN 1610
  194. 1620  POKE  -16297,0: POKE  -16300,0: POKE  -16302,0: POKE  -16304,0
  195. 1630  GOTO 210
  196. 1699  REM 
  197. 1700  REM  ::::::::::::::::
  198. 1701  REM  : RESET SCORES :
  199. 1702  REM  ::::::::::::::::
  200. 1703  REM 
  201. 1704  REM   To reset scores
  202. 1705  REM   type  GOTO 1710
  203. 1706  REM 
  204. 1710 D$ =  CHR$(4):F$ = "CITYP.SCORES": PRINT D$"DELETE"F$: PRINT D$"OPEN"F$: PRINT D$"WRITE"F$: FOR D = 1 TO 10: PRINT "...............": PRINT 0: NEXT : PRINT D$"CLOSE": REM               15 PERIODS