home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Games / BATTLESHIP-1P (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  4.9 KB  |  198 lines

  1. 0 DEF FNB(Q)=1023+X9+(Q-1)*40
  2. 1 DEF FNC(Q)=1023+Q+(Y9-1)*40
  3. 2 D$=""
  4. 3 D$=D$+"                                       [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]"
  5. 4 D$=D$+"[157][157][157][157][157][157][157][157]"
  6. 5 POKE53280,3:POKE53281,14
  7. 6 DIMM1(20,15)
  8. 10 M$="[213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]"
  9. 11 M1$="[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203]"
  10. 15 PRINT"[147][144]"
  11. 16 PRINTTAB(1);M$;"    ";M$
  12. 17 FORI=1TO10:PRINTTAB(1);"[221]               [221]    [221]               [221]":NEXT
  13. 18 PRINTTAB(1);M1$;"    ";M1$
  14. 19 PRINT"    ENEMY FLEET          YOUR FLEET"
  15. 20 PRINTD$;"GETTING THE SHIPS...":GOSUB1000:PRINTD$;
  16. 30 PRINT"JOYSTICKS OR KEYBOARD? (J OR K)"
  17. 31 GOSUB9000
  18. 32 IFX$<>"J"ANDX$<>"K"THEN31
  19. 33 X1$=X$
  20. 35 XX$="JOYSTICK":IFX$="K"THENXX$="KEYBOARD"
  21. 37 X2$="FIRE BUTTON":IFX$="K"THENX2$="SPACE BAR"
  22. 40 IFX$="J"THEN100
  23. 45 PRINTD$;"USE  I  TO MOVE UP"
  24. 46 PRINT"      M  TO MOVE DOWN"
  25. 47 PRINT"      K  TO MOVE RIGHT"
  26. 48 PRINT"      J  TO MOVE LEFT"
  27. 49 PRINT: PRINT" AND SPACE-BAR TO SHOOT"
  28. 50 PRINT"PRESS ANY KEY TO CONTINUE...";:GOSUB9000
  29. 51 PRINTD$:FORI=1TO6:PRINT"                               ":NEXT
  30. 52 PRINT"                              ";
  31. 100 GOSUB5000:S$="AIRCRAFT CARRIER":N9=4:N8=1:GOSUB1500
  32. 110 S$="BATTLESHIP":N9=3:N8=2:GOSUB1500
  33. 120 S$="CRUISER":N9=2:N8=3:GOSUB1500
  34. 130 S$="CRUISER":N9=2:N8=3:GOSUB1500
  35. 140 S$="DESTROYER":N9=1:N8=4:GOSUB1500
  36. 150 POKEV+21,0:PRINTD$;"WAIT WHILE I PLACE MY SHIPS":GOSUB2000
  37. 160 PRINTD$
  38. 170 REM
  39. 200 PRINTD$;"AND THE BATTLE RAGES..."
  40. 201 OX=0:C2=0:C1=0:X9=10:Y9=7:GOSUB1300
  41. 202 IFF5=-1THEN600
  42. 210 FORI=1TODF:GOSUB3000:NEXT
  43. 220 GOSUB2500
  44. 230 IFC2=17ORC1=17THEN300
  45. 240 GOTO210
  46. 300 POKEV+21,0:IFC1=17THENPRINTD$;"YOU WIN":GOTO500
  47. 310 GOSUB2300:PRINTD$;"I WIN"
  48. 500 PRINT:PRINT" DO YOU WANT TO PLAY AGAIN (Y/N)?";
  49. 510 GOSUB9000:IFX$="N"THEN40000
  50. 520 GOTO15
  51. 600 PRINTD$;"YOUR ATTACK"
  52. 605 GOSUB3000:IFF1<>1THEN605
  53. 610 PRINTD$
  54. 620 GOSUB2500
  55. 630 IFC2=17ORC1=17THEN300
  56. 640 GOTO600
  57. 999 END
  58. 1000 REM SPRITE INIT
  59. 1001 RESTORE
  60. 1010 V=53248:POKE2040,13:POKEV+39,1:FORI=832TO832+62:READQ:POKEI,Q:NEXT
  61. 1020 DATA0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0
  62. 1021 DATA0,0,0,255,129,255,0,0,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0
  63. 1022 DATA0,24,0,0,24,0,0,24,0
  64. 1030 POKEV+21,0
  65. 1099 RETURN
  66. 1100 REM KEYBOARD ROUTINE
  67. 1105 DX=0:DY=0:F1=0
  68. 1110 GETX$
  69. 1120 IFX$="I"THENDY=-1:RETURN
  70. 1130 IFX$="M"THENDY=1:RETURN
  71. 1140 IFX$="K"THENDX=1:RETURN
  72. 1150 IFX$="J"THENDX=-1:RETURN
  73. 1160 IFX$=" "THENF1=1:RETURN
  74. 1170 RETURN
  75. 1200 REM JOYSTICK ROUTINE
  76. 1210 DY=0:DX=0:F1=0
  77. 1215 W=PEEK(56320)
  78. 1220 IF(WAND16)=0THENF1=1:RETURN
  79. 1230 IF(WAND1)=0THENDY=-1:RETURN
  80. 1240 IF(WAND2)=0THENDY=1:RETURN
  81. 1250 IF(WAND4)=0THENDX=-1:RETURN
  82. 1260 IF(WAND8)=0THENDX=1:RETURN
  83. 1270 RETURN
  84. 1300 REM SHOW SPRITE AT X9,Y9
  85. 1310 W2=35+Y9*8:W1=8+X9*8
  86. 1320 POKEV+21,0:POKEV+16,0:IFW1>255THENPOKEV+16,1:W1=W1-255
  87. 1330 POKEV,W1:POKEV+1,W2:POKEV+21,1
  88. 1390 RETURN
  89. 1500 REM SHIP PLACEMENT ROUTINE
  90. 1510 POKEV,200:POKEV+1,59 :POKEV+21,1
  91. 1520 PRINTD$;"USE ";XX$;" TO PLACE ";S$
  92. 1530 PRINT" PRESS ";X2$;" WHEN DONE"
  93. 1535 X9=24:Y9=3
  94. 1537 GOSUB1300
  95. 1540 IFX1$="J"THENGOSUB1200
  96. 1550 IFX1$="K"THENGOSUB1100
  97. 1560 IFF1=1THEN1600
  98. 1565 IFDX=0ANDDY=0THEN1540
  99. 1570 X9=X9+DX:Y9=Y9+DY
  100. 1580 IFX9<24THENX9=24
  101. 1581 IFY9<3THENY9=3
  102. 1582 IFX9>38THENX9=38
  103. 1583 IFY9>12THENY9=12
  104. 1590 GOTO1537
  105. 1600 PRINTD$;"                                   ";
  106. 1601 PRINTD$;"HORIZONTAL OR VERTICAL (H OR V)?"
  107. 1610 GOSUB9000
  108. 1620 IFX$<>"H"ANDX$<>"V"THEN1610
  109. 1630 PRINTD$
  110. 1640 IFX$="V"THEN1700
  111. 1650 SX=X9:SY=Y9:F9=0:FORX9=SXTOSX+N9
  112. 1660 IFPEEK(FNC(X9))<>32THENF9=-1
  113. 1670 NEXT:IFF9=-1THEN1800
  114. 1680 FORX9=SXTOSX+N9:POKEFNC(X9),N8:POKEFNC(X9)+54272,0:NEXT:GOTO1900
  115. 1700 SX=X9:SY=Y9:F9=0:FORY9=SYTOSY+N9
  116. 1710 IFPEEK(FNB(Y9))<>32THENF9=-1
  117. 1720 NEXT:IFF9=-1THEN1800
  118. 1730 FORY9=SYTOSY+N9:POKEFNB(Y9),N8:POKEFNB(Y9)+54272,0:NEXT:GOTO1900
  119. 1800 PRINTD$;"SORRY THE SHIP DOES NOT FIT THERE":FORI=1TO1000:NEXT
  120. 1810 GOTO1500
  121. 1900 RETURN
  122. 2000 REM COMPUTER SHIP PLACEMENT
  123. 2001 A=RND(-TI)
  124. 2010 FORI=1TO10:FORJ=1TO15:M1(J,I)=0:NEXT:NEXT
  125. 2011 FORI=1TO11:M1(16,I)=-1:NEXT
  126. 2012 FORI=1TO16:M1(I,11)=-1:NEXT
  127. 2020 N9=4:N8=1:GOSUB2200
  128. 2030 N9=3:N8=2:GOSUB2200
  129. 2040 N9=2:N8=3:GOSUB2200
  130. 2050 N9=2:N8=3:GOSUB2200
  131. 2060 N9=1:N8=4:GOSUB2200
  132. 2099 RETURN
  133. 2100 REM GET RANDOM X,Y
  134. 2110 X=INT(RND(1)*15+1):Y=INT(RND(1)*10+1)
  135. 2199 RETURN
  136. 2200 GOSUB2100
  137. 2205 IFINT(RND(1)*2)=1THEN2250
  138. 2210 SX=X:SY=Y:F9=0:FORX=SXTOSX+N9
  139. 2220 IFM1(X,Y)<>0THENF9=-1
  140. 2225 NEXT:IFF9=-1THEN2200
  141. 2230 FORX=SXTOSX+N9:M1(X,Y)=N8:NEXT:RETURN
  142. 2250 SX=X:SY=Y:F9=0:FORY=SYTOSY+N9
  143. 2260 IFM1(X,Y)<>0THENF9=-1
  144. 2265 NEXT:IFF9=-1THEN2200
  145. 2270 FORY=SYTOSY+N9:M1(X,Y)=N8:NEXT:RETURN
  146. 2300 REM REVEAL COMPUTER'S SHIPS
  147. 2310 FORI=1TO15:FORJ=1TO10:IFM1(I,J)=0THEN2350
  148. 2320 W1=(J+1)*40+I+1025:POKEW1,M1(I,J):POKEW1+54272,0
  149. 2350 NEXT:NEXT:RETURN
  150. 2500 REM COMPUTER'S SHOT
  151. 2510 IFOX<>0THEN2600
  152. 2520 GOSUB2100
  153. 2525 W1=(Y+1)*40+X+1046
  154. 2540 IFPEEK(W1)=81THENRETURN
  155. 2545 POKEW1+54272,1:IFPEEK(W1)<>32THENPOKEW1+54272,2:OX=X:OY=Y:C2=C2+1
  156. 2550 POKEW1,81:RETURN
  157. 2600 FF=0
  158. 2601 W1=(OY+1)*40+OX+1046
  159. 2640 IF(OX+1<16)AND(PEEK(W1+1))<>81THENY=OY:X=OX+1:GOTO2525
  160. 2641 IF(OY+1<11)AND(PEEK(W1+40))<>81THENY=OY+1:X=OX:GOTO2525
  161. 2642 IF(OY-1>0)AND(PEEK(W1-40))<>81THENY=OY-1:X=OX:GOTO2525
  162. 2643 IF(OX-1>0)AND(PEEK(W1-1))<>81THENY=OY:X=OX-1:GOTO2525
  163. 2644 IFFF=-1THEN2694
  164. 2645 FF=-1:IF(PEEK(W1+54273)AND2)=2THENOX=OX+1:GOTO2601
  165. 2646 IF(PEEK(W1+54271)AND2)=2THENOX=OX-1:GOTO2601
  166. 2647 IF(PEEK(W1+54312)AND2)=2THENOY=OY+1:GOTO2601
  167. 2648 IF(PEEK(W1+54232)AND2)=2THENOY=OY-1:GOTO2601
  168. 2694 OX=0
  169. 2695 GOTO2520
  170. 3000 REM PLAYER'S MOVE
  171. 3010 IFX1$="J"THENGOSUB1200
  172. 3020 IFX1$="K"THENGOSUB1100
  173. 3030 IFF1=1THEN3100
  174. 3040 IFDX=0ANDDY=0THENRETURN
  175. 3050 X9=X9+DX:Y9=Y9+DY
  176. 3060 IFX9<3THENX9=3
  177. 3070 IFY9<3THENY9=3
  178. 3075 IFX9>17THENX9=17
  179. 3080 IFY9>12THENY9=12
  180. 3090 GOSUB1300:RETURN
  181. 3100 W1=X9+1023+(Y9-1)*40:IFPEEK(W1)<>32THENRETURN
  182. 3110 POKEW1+54272,1:IFM1(X9-2,Y9-2)<>0THENPOKEW1+54272,2:C1=C1+1
  183. 3120 POKEW1,81
  184. 3199 RETURN
  185. 5000 F5=0:PRINTD$;"DO YOU WANT A REAL TIME BATTLE (Y/N)?"
  186. 5001 GOSUB9000:IFX$="Y"THEN5009
  187. 5002 F5=-1:PRINTD$;:RETURN
  188. 5009 PRINTD$;"DIFFICULTY FACTOR (1-9)?"
  189. 5010 GOSUB9000
  190. 5020 IFX$<"1"ORX$>"9"THEN5010
  191. 5030 PRINTD$
  192. 5040 DF=10-VAL(X$)
  193. 5099 RETURN
  194. 9000 GETX$:IFX$=""THEN9000
  195. 9010 IFX$="[137]"THEN40000
  196. 9099 RETURN
  197. 40000 END
  198.