home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol116 / target.bas < prev   
Encoding:
BASIC Source File  |  1985-02-10  |  8.6 KB  |  222 lines

  1. 10 REM ********** TARGET GAME FOR MICROSOFT BASIC VERSION 5.2 ***********
  2. 20 REM      *******  WRITTEN BY JONATHAN WINTON 10/03/1983 ********
  3. 30 REM                  ******* (c) 1983 *******
  4. 40 GOSUB 2050
  5. 50 SHIPS=2
  6. 60 PRINT CHR$(26)
  7. 70 A=3:B=3
  8. 80 E=0
  9. 90 MISS=0
  10. 100 DIM NAP$(10),SCR(10)
  11. 110 E=E+1:QQ=QQ+1:INPUT "DO YOU WANT: 1=SINGLE, 2=DOUBLE  SHOT FIRING";SH$
  12. 120 INPUT "PLEASE TYPE IN A RANDOM NUMBER";DD:RANDOMIZE DD*3.12+DD
  13. 130 '
  14. 140 A=INT(RND*25):IF A < 4 OR A > 18 THEN GOTO 140
  15. 150 B=INT(RND*100+1):IF B<3 OR B>71 THEN 150
  16. 160 A1$="       "
  17. 170 A1$="       "
  18. 180 A$="l--O--l"
  19. 190 PRINT CHR$(26)
  20. 200 DEF FNC$(X,Y)=CHR$(27)+CHR$(61)+CHR$(32+X)+CHR$(32+Y)
  21. 210 X$=STRING$(29,45)
  22. 220 PRINT FNC$(12,2);X$"|";FNC$(12,46);"|"X$
  23. 230 FOR I=1 TO 5:PRINT FNC$(9+I,LEN(X$)+2);"|";TAB(19);"|":NEXT I
  24. 240 PRINT FNC$(9,LEN(X$)+1);"___";TAB(19);"___"
  25. 250 PRINT FNC$(15,LEN(X$)+1);"---";TAB(19);"---"
  26. 260 FOR I=1 TO 11:PRINT FNC$(I+6,1);"|"
  27. 270 NEXT I
  28. 280 FOR I=1 TO 11:PRINT FNC$(I+6,76);"|":NEXT I
  29. 290 Z$=STRING$(76,61)
  30. 300 PRINT FNC$(4,1);Z$
  31. 310 RANDOMIZE A*2+(3.14159/2)/B
  32. 320 PRINT FNC$(2,2)"SCORE :";TS(1)
  33. 330 PRINT FNC$(2,20);"MISSES :";MISS
  34. 340 IF B<39 AND B>32 AND A>11 AND A<13 THEN PRINT FNC$(1,37);"!! IN RANGE !!" 
  35.     ELSE PRINT FNC$(1,40)"             "
  36. 350 PRINT FNC$(2,60)"SHIPS LEFT :";SHIPS
  37. 360 PRINT FNC$(2,40);"SHOTS: ";SHOT
  38. 370 PRINT FNC$(21,1);Z$
  39. 380 PRINT FNC$(A-1,B);A1$
  40. 390 PRINT FNC$(A+1,B);A2$
  41. 400 PRINT FNC$(A,B);B1$;A$;B2$
  42. 410 IF A>10 AND A<14 AND B>30 AND B<39 AND INT(RND*100+1)<20 THEN GOSUB 1470
  43. 420 I$=INKEY$
  44. 430 IF I$="4" THEN 660
  45. 440 IF I$="2" AND A=<2 THEN 220
  46. 450 IF I$="2" AND A=<5 THEN A$=""
  47. 460 IF I$="2" AND A=<4 THEN A2$=""
  48. 470 IF I$="2" AND A=<6 THEN A1$=""
  49. 480 IF I$="2" THEN B1$="":IF I$="2" THEN B2$=""
  50. 490 IF I$="2" AND A<=20 THEN A1$="       "
  51. 500 IF I$="2" AND A<=20 THEN A$="l--O--l"
  52. 510 IF I$="2" AND A<=20 THEN A2$="       "
  53. 520 IF I$="2" THEN A=A-1
  54. 530 IF I$="8" AND A>=21 THEN 220
  55. 540 IF I$="8" AND A=>5 THEN A$="l--O--l"
  56. 550 IF I$="8" AND A=>4 THEN A2$="       "
  57. 560 IF I$="8" AND A=>5 THEN A1$="       "                             
  58. 570 IF I$="8" THEN B1$="":IF I$="2" THEN B2$=""                               
  59. 580 IF I$="8" THEN A=A+1
  60. 590 IF I$="8" AND A>=21 THEN A$=""
  61. 600 IF I$="8" AND A>19 THEN A2$=""
  62. 610 IF I$="8" AND A>=22 THEN A1$=""
  63. 620 IF I$="6" AND B=<0 THEN 220
  64. 630 IF I$="6" AND B=<1 THEN A$="      "
  65. 640 IF I$="6" THEN B2$=" "
  66. 650 IF I$="6" THEN B=B-1
  67. 660 IF I$="4" AND B>71 THEN A$="      "
  68. 670 IF I$="4" AND B>72 THEN 220
  69. 680 IF I$="4" THEN B1$=" "
  70. 690 IF I$="4" THEN B=B+1
  71. 700 IF I$="F" THEN GOSUB 720
  72. 710 GOTO 220
  73. 720 IF SH$="2" THEN 840:Q=20:W=40
  74. 730 Q=20:W=38:QW$="O"
  75. 740 GOTO 780
  76. 750 PRINT FNC$(Q-1,W);" "
  77. 760 PRINT FNC$(Q,W);QW$
  78. 770 PRINT FNC$(Q+1,W);" ":RETURN
  79. 780 FOR I=1 TO 3:Q=Q-1:GOSUB 750:FOR D=1 TO 50:NEXT D:NEXT I
  80. 790 QW$="o"
  81. 800 FOR I=1 TO 3:Q=Q-1:GOSUB 750:FOR D=1 TO 50:NEXT D:NEXT I
  82. 810 QW$="."
  83. 820 FOR I=1 TO 2:Q=Q-1:GOSUB 750:FOR D=1 TO 50:NEXT D:NEXT I
  84. 830 PRINT FNC$(Q,W-4);"      ":GOTO 960
  85. 840 Q=20:W=27:W1=47
  86. 850 QW$="O"
  87. 860 GOTO 900
  88. 870 PRINT FNC$(Q-1,W);" ":PRINT FNC$(Q-1,W1);" "
  89. 880 PRINT FNC$(Q,W);QW$:PRINT FNC$(Q,W1);QW$
  90. 890 PRINT FNC$(Q+1,W-1);" ":PRINT FNC$(Q+1,W1+1);" ":RETURN
  91. 900 FOR I=1 TO 3:Q=Q-1:W=W+1:W1=W1-1:GOSUB 870:FOR D=1 TO 50:NEXT D:NEXT I
  92. 910 QW$="o"
  93. 920 FOR I=1 TO 3:Q=Q-1:W=W+1:W1=W1-1:GOSUB 870:FOR D=1 TO 50:NEXT D:NEXT I
  94. 930 QW$="."
  95. 940 FOR I=1 TO 2:Q=Q-1:W=W+1:W1=W1-1:GOSUB 870:FOR D=1 TO 50:NEXT D:NEXT I
  96. 950 PRINT FNC$(Q,W-2);"      "
  97. 960 '
  98. 970 SHOT=SHOT+1:TS(1)=TS(1)-10:IF A=12 AND B>32 AND B<37 THEN TS(1)=TS(1)+100:IF A=12 AND B>32 AND B<37 THEN 130
  99. 980 MISS=MISS+1
  100. 990 GOTO 220
  101. 1000 PRINT CHR$(26)
  102. 1010 PRINT:PRINT:PRINT
  103. 1020 PRINT TAB(30);"SCORE :"TS(1)
  104. 1030 PRINT TAB(30);"SHOTS :"SHOT
  105. 1040 RANDOMIZE SC*2+(SHOT/3.33)
  106. 1050 OPEN "I",#1,"SCORES.DAT"
  107. 1060 FOR X=1 TO 10
  108. 1070 INPUT#1,NAP$(X),SCR(X)
  109. 1080 NEXT X
  110. 1090 CLOSE #1
  111. 1100 FOR X=1 TO 10
  112. 1110 IF TS(1)>SCR(X) THEN 1140
  113. 1120 NEXT X
  114. 1130 GOTO 1220
  115. 1140 PRINT CHR$(26):PRINT FNC$(10,20);"WOULD PLAYER 1 PLEASE ENTER HIS NAME";
  116. 1150 INPUT NA$:IF LEN(NA$)>20 THEN PRINT"SHORTER PLEASE,":GOTO 1140
  117. 1160 FOR Y=10 TO X STEP -1
  118. 1170 ' SCR(Y+1)=SCR(Y)
  119. 1180 ' NAP$(Y+1)=NAP$(Y)
  120. 1190 NEXT Y
  121. 1200 SCR(X)=TS(1)
  122. 1210 NAP$(X)=NA$
  123. 1220 OPEN "O",#2,"COPY"
  124. 1230 FOR X=1 TO 10
  125. 1240 PRINT #2,NAP$(X);",";SCR(X)
  126. 1250 NEXT X
  127. 1260 CLOSE #2
  128. 1270 KILL "SCORES.DAT"
  129. 1280 NAME "COPY" AS "SCORES.DAT"
  130. 1290 OPEN"I",#1,"SCORES.DAT"
  131. 1300 FOR X=1 TO 10
  132. 1310 INPUT#1,NAP$(X),SCR(X)
  133. 1320 NEXT X
  134. 1330 CLOSE #1
  135. 1340 PRINT CHR$(26):PRINT:PRINT:PRINT
  136. 1350 PRINT TAB(30);"HIGH SCORES":PRINT:PRINT
  137. 1360 FOR X=1 TO 10
  138. 1370 Q$="0"
  139. 1380 X$=STR$(SCR(X))
  140. 1390 PRINT TAB(20);NAP$(X);TAB(45);
  141. 1400 FOR A=1 TO 10-LEN(X$)
  142. 1410 NEXT A
  143. 1420 Z$=MID$(X$,2,LEN(X$)-1)
  144. 1430 PRINT Z$
  145. 1440 NEXT X
  146. 1450 PRINT:PRINT:PRINT
  147. 1460 INPUT "PLAY AGAIN (Y/N)";BR$:IF BR$="Y" THEN 110 ELSE CHAIN "BASICGAM"
  148. 1470 IF INT(RND*100)<25 THEN RETURN:PRINT FNC$(A,B);"   .    "
  149. 1480 FOR I=1 TO 250:NEXT
  150. 1490 PRINT FNC$(A,B);"   o   "
  151. 1500 FOR I=1 TO 250:NEXT
  152. 1510 PRINT FNC$(A,B);"   O   "
  153. 1520 FOR I=1 TO 250:NEXT
  154. 1530 PRINT FNC$(A-1,B);"   _ "
  155. 1540 PRINT FNC$(A,B);"  l_l  "
  156. 1550 FOR I=1 TO 250:NEXT
  157. 1560 PRINT FNC$(A-1,B);"   __  "
  158. 1570 PRINT FNC$(A,B);"  l__l  "
  159. 1580 PRINT FNC$(A-2,B);"  _____ "
  160. 1590 PRINT FNC$(A-1,B);" l     l "
  161. 1600 PRINT FNC$(A,B);" l_____l "
  162. 1610 FOR I=1 TO 250:NEXT I
  163. 1620 PRINT FNC$(A-3,B);" ______ "
  164. 1630 PRINT FNC$(A-2,B);"l      l"
  165. 1640 PRINT FNC$(A-1,B);"l      l"
  166. 1650 PRINT FNC$(A,B);"l______l"
  167. 1660 FOR I=1 TO 250:NEXT
  168. 1670 PRINT FNC$(A-3,B);" ________ "
  169. 1680 PRINT FNC$(A-2,B);"l        l"
  170. 1690 PRINT FNC$(A-1,B);"l        l"
  171. 1700 PRINT FNC$(A,B);"l        l"
  172. 1710 PRINT FNC$(A+1,B);"l________l"
  173. 1720 FOR I=1 TO 250:NEXT
  174. 1730 PRINT FNC$(A-3,B-2);" ___________ "
  175. 1740 PRINT FNC$(A-2,B-2);"l           l"
  176. 1750 PRINT FNC$(A-1,B-2);"l           l"
  177. 1760 PRINT FNC$(A,B-2);"l           l"
  178. 1770 PRINT FNC$(A+1,B-2);"l___________l"
  179. 1780 FOR I=1 TO 250:NEXT
  180. 1790 PRINT FNC$(A-3,B-3);" ______________ "
  181. 1800 PRINT FNC$(A-2,B-3);"l              l"
  182. 1810 PRINT FNC$(A-1,B-3);"l              l"
  183. 1820 PRINT FNC$(A,B-3)  ;"l              l"
  184. 1830 PRINT FNC$(A+1,B-3);"l              l"
  185. 1840 PRINT FNC$(A+2,B-3);"l______________l"
  186. 1850 PRINT CHR$(30)
  187. 1860 PRINT:PRINT:PRINT
  188. 1870 PRINT
  189. 1880 PRINT "  \_          l                     l    \                /       l      _/  "
  190. 1890 PRINT "    \        /                      l     \              l       /     _/    " 
  191. 1900 PRINT "     \      l                      /      l               \     /     l      "
  192. 1910 PRINT "      \    /                      /        \               \   /     /       "
  193. 1920 PRINT "       \   \                      \        l                l /    _/        "
  194. 1930 PRINT "        \__/                       \      /                 l/____/          "
  195. 1940 PRINT "         \                          \     l            _____/                "
  196. 1950 PRINT "          \______                    \  _/            /  \                   "           
  197. 1960 PRINT "             /   \                    l/           __/    \                  "
  198. 1970 PRINT "       _____/     \_____          ____/       ____/        l__               "
  199. 1980 PRINT "       \                \        l\          l                \              "
  200. 1990 PRINT "        \______          \    __/  \ _______/\                /              "
  201. 2000 PRINT "               l          \__/       \      __\           ___/               " 
  202. 2010 PRINT "              /             \__       \    /             /                   "
  203. 2020 PRINT "            /__                \_______l                 \                   "
  204. 2030 FOR HHI=1 TO 200:NEXT HHI
  205. 2040 SHIPS=SHIPS-1:IF SHIPS=0 THEN 1000 ELSE 140
  206. 2050 PRINT CHR$(26)
  207. 2060 PRINT "You are a pilot of the space ship 'AINTNOPRIZE' your mission is"
  208. 2070 PRINT "to destroy all U.F.O.'s trying to kill you.  You only have  two"
  209. 2080 PRINT "ships -  after that it's all over.  And if you are good  enough"
  210. 2090 PRINT "you will be asked for your name !"
  211. 2100 PRINT:PRINT "Moves are -"
  212. 2110 PRINT "        4 = move sight left":PRINT "        6 = move sight right"
  213. 2120 PRINT "        2 = move sight down":PRINT "        8 = move sight up"
  214. 2130 PRINT "        F = fire"
  215. 2140 PRINT:PRINT "* REMEMBER - you are controlling the sight not the U.F.O. so"
  216. 2150 PRINT "the controls may seem strange *"
  217. 2160 PRINT:PRINT "PRESS <CR> TO START";:INPUT CR
  218. 2170 RETURN
  219. t the U.F.O. so"
  220. 2150 PRINT "the controls may seem strange *"
  221. 2160 PRINT:PRINT "PRESS <CR> TO START";:INPUT CR
  222. 2170