home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / slither.zip / SLITHER.BAS next >
BASIC Source File  |  1986-04-27  |  17KB  |  382 lines

  1. 10 '                        Slither
  2. 20 '             Written by Brian Bakken
  3. 30 '                     on November 30, 1985
  4. 40 ' this program, in its original state, was the game SNAKE
  5. 50 '   it has been greatly enhanced and now runs under the name SLITHER
  6. 60 '   for lack of a better name.
  7. 70 '
  8. 80 ' the program now will allow user to move in all directions and there is
  9. 90 '   no 'walls' to run into, so, your only enemy is yourself!!
  10. 100 '   There are many more options to chose from now, including screen color,
  11. 110 '   speed and growth rates, target freguency and duration, and the special
  12. 120 '   trace screen which leaves your trail black on a colored screen
  13. 130 '
  14. 140 ' The compiled version (under the same name) runs considerably faster,
  15. 150 '   (of course) and therefore, is much more dangerous
  16. 160 ' Used the IBM 2.0 Basic Compiler
  17. 170 '
  18. 180 '
  19. 190 '
  20. 200 KEY OFF : COLOR 15,0,0 : SCREEN 0,0,0 : WIDTH 80 : CLS : COLOR 0,15
  21. 210 LOCATE 6,15 : PRINT CHR$(218);STRING$(48,196);CHR$(191);
  22. 220 LOCATE 15,15 : PRINT CHR$(192);STRING$(48,196);CHR$(217);
  23. 230 FOR T% = 7 TO 14
  24. 240      LOCATE T%,15 : PRINT CHR$(179); : LOCATE T%,64 : PRINT CHR$(179);
  25. 250 NEXT
  26. 260 COLOR 15,0,0
  27. 270 LOCATE 8,34 : PRINT "S L I T H E R"
  28. 280 LOCATE 9,35 : PRINT "Version 1.0"
  29. 290 LOCATE 11,29 : PRINT "Written by Brian Bakken"
  30. 300 LOCATE 12,32 : PRINT "November 30, 1985"
  31. 310 LOCATE 20,16
  32. 320 PRINT "This game has been placed into the Public Domain"
  33. 330 LOCATE 21,17
  34. 340 PRINT "and shall not be sold by anyone for any reason"
  35. 350 LOCATE 23,28
  36. 360 PRINT "In other words, its FREE!"
  37. 370 LOCATE 14,31 : PRINT "<SPACE> to continue" : LOCATE 25,79
  38. 380 A$ = "" : WHILE A$ <> " " : A$ = INKEY$ : WEND : CLS : LOCATE 10,1
  39. 390 INPUT "instructions    (Y or N) ";A$ : CLS
  40. 400 IF A$ = "N" OR A$ = "n" THEN LOCATE 10,1 : GOTO 670
  41. 410 PRINT "The goal of the game is to increase your score while not";
  42. 420 PRINT " biting your tail."
  43. 430 PRINT "Use the arrows on numeric pad to change the direction of the snake
  44. 440 PRINT "Run over the targets (numbers) before they desappear for points."
  45. 450 PRINT "There is no boundary, the screen will wrap from top to bottom";
  46. 460 PRINT " and side to side"
  47. 470 PRINT "The Tracer Screen Mode will leave a black path on a colored screen ";
  48. 480 PRINT " as the"
  49. 490 PRINT "  snake travels around.  Can be somewhat confusing at first"
  50. 500 PRINT
  51. 510 PRINT "The various sounds you will here are";:FOR T=1 TO 2000 : NEXT
  52. 520 SOUND 4000,1 : PRINT TAB(40);"when a target appears":FOR T = 1 TO 3000:NEXT
  53. 530 SOUND 100,1 : PRINT TAB(40);"when a target disappears"
  54. 540 PRINT TAB(36);"and "; : FOR T = 1 TO 3000 : NEXT
  55. 550 FOR T%=1 TO 3:SOUND 4000,.1:SOUND 3000,.1:SOUND 2000,.1:SOUND 1000,.1:NEXT
  56. 560 PRINT "when a target is scored":FOR T = 1 TO 1000:NEXT
  57. 570 PRINT : PRINT "Good luck on you mission."
  58. 580 PRINT "   If you are using an AT or some other 'turboized' machine, Good riddence!!"
  59. 590 PRINT
  60. 600 PRINT "The speed will increase as the game progresses."
  61. 610 PRINT "The growth rate governs the number of moves between ";
  62. 620 PRINT "growths of one character"
  63. 630 PRINT "  a growth rate of 1 would make the snake seem";
  64. 640 PRINT " to stretch continuously"
  65. 650 PRINT "The lower the growth rate, the faster the speed increases"
  66. 660 PRINT : PRINT
  67. 670 DEFINT A-Z
  68. 680 DIM BOARD%(24,80)
  69. 690 'ON ERROR GOTO 2810
  70. 700 INPUT "Use default settings   (Y, N, S to set, E to examine) ";D$
  71. 710 IF D$ = "Y" OR D$ = "y" THEN GOTO 3190    'use the default settings
  72. 720 IF D$ = "S" OR D$ = "s" THEN GOTO 3390    'set and use the default settings
  73. 730 IF D$ = "E" OR D$ = "e" THEN GOTO 3580    'set and use the default settings
  74. 740 '
  75. 750 INPUT "Starting speed                     (1 = fast  1000 = slow)";W$
  76. 760 IF VAL(W$)<1 OR VAL(W$)>1000 THEN GOSUB 3050:GOTO 750
  77. 770 W = VAL(W$)
  78. 780 '
  79. 790 INPUT "Maximum speed                  (1 to 1000)  <CR> for none ";S$
  80. 800 IF VAL(S$)<0 OR VAL(S$)>1000 THEN GOSUB 3050:GOTO 790
  81. 810 MAXSPEED = VAL(S$) * 10
  82. 820 '
  83. 830 INPUT "Growth rate                        (1 = fast  1000 = slow)";G$
  84. 840 IF VAL(G$)<1 OR VAL(G$)>1000 THEN GOSUB 3050:GOTO 830 ELSE GROWTH = VAL(G$)
  85. 850 WAITIME = W * 10 : WAITRATE = W
  86. 860 '
  87. 870 INPUT "Maximum length of snake        (1 to 1920)  <CR> for none ";M$
  88. 880 IF VAL(M$)<0 OR VAL(M$)>1920 THEN GOSUB 3050:GOTO 870
  89. 890 MAXLENGTH% = VAL(M$)
  90. 900 '
  91. 910 INPUT "Target frequency               (1 = immediate  50 = never)";E$
  92. 920 IF VAL(E$)<1 OR VAL(E$)>50 THEN GOSUB 3050:GOTO 910 ELSE TON% = VAL(E$)*2
  93. 930 IF VAL(E$) = 50 THEN L$ = "0" : TOFF% = 100 : GOTO 970
  94. 940 '
  95. 950 INPUT "Target duration on      (0 = until scored   1-10 = random)";L$
  96. 960 IF VAL(L$)<0 OR VAL(L$)>10 THEN GOSUB 3050:GOTO 950 ELSE TOFF%=100-VAL(L$)
  97. 970 PRINT
  98. 980 '
  99. 990 INPUT "Screen color    <RETURN> to use present color     (0 - 15)";SC$
  100. 1000 IF SC$ = "" THEN 1050
  101. 1010 IF VAL(SC$)<0 OR VAL(SC$)>15 THEN GOSUB 3050:GOTO 970 ELSE ACOLOR%=VAL(SC$)
  102. 1020 COLOR 15,ACOLOR%,ACOLOR% :PRINT TAB(15);STRING$(50,"*");CHR$(1);SPACE$(13);
  103. 1030 PRINT TAB(15);CHR$(1);STRING$(50,"*");SPACE$(13);
  104. 1040 GOTO 970
  105. 1050 IF ACOLOR% = 0 THEN TRACER% = 0 : GOTO 1140 ELSE PRINT
  106. 1060 INPUT "Use the tracer screen mode                        (Y or N)";T$
  107. 1070 IF T$="Y" OR T$="y" THEN T$="Y" : TRACER%=0 : ELSE T$="N" : TRACER%=ACOLOR%
  108. 1080 IF SETTING% THEN RETURN
  109. 1090 PRINT : PRINT "press any key to start game";
  110. 1100 A$ = "" : WHILE A$ = "" : A$ = INKEY$ : WEND
  111. 1110 '
  112. 1120 '          start the show
  113. 1130 '
  114. 1140 COLOR 15,ACOLOR%,ACOLOR% :CLS:COLOR 0,15 : LOCATE 25,1:PRINT SPACE$(80);
  115. 1150 LOCATE 25,1 : PRINT " score : 0"; : LOCATE 25,22 : PRINT "length : 3";
  116. 1160 LOCATE 25,42 : PRINT "speed : ";USING "####";WAITIME/10;
  117. 1170 LOCATE 25,57 : PRINT "ESC to Exit, P to Pause";
  118. 1180 COLOR 15,TRACER%,TRACER% : LOCATE 1,1
  119. 1190 RANDOMIZE(VAL(RIGHT$(TIME$,2)))
  120. 1200 CHEAD$ = CHR$(1)                                    'character for the head
  121. 1210 SCORE = 0                                           'current score
  122. 1220 TARGET = 0                                          'target value
  123. 1230 SLEN% = 4                                           'snake length
  124. 1240 MOVE% = 1                                           'current direction
  125. 1250 YHEAD% = RND * 22 + 1 : XHEAD% = RND * 75 + 4       'starting positons
  126. 1260 YTAIL% = YHEAD : XTAIL% = XHEAD% - 3                'starting positons
  127. 1270 LOCATE YHEAD%,XTAIL% : PRINT "***";CHEAD$
  128. 1280 FOR TT% = XTAIL% TO XHEAD% : BOARD%(YHEAD%,TT%) = 1 : NEXT
  129. 1290 BOARD%(YHEAD%,XHEAD%) = 9
  130. 1300 '
  131. 1310 FOR GROW = 1 TO GROWTH
  132. 1320   FOR W = 1 TO WAITIME: NEXT W            'wait for them to catch up
  133. 1330   OLDXH% = XHEAD% : OLDYH% = YHEAD%       'save the old values
  134. 1340   OLDXT% = XTAIL% : OLDYT% = YTAIL%
  135. 1350   ST$ = INKEY$                            'see if there's a key stroke
  136. 1360   IF ST$ = "" THEN 1480                    'continue in same direction
  137. 1370   IF ASC(ST$) = 80 OR ASC(ST$) = 112 THEN GOSUB 2830 : GOTO 1350 'pause
  138. 1380   IF ASC(ST$) = 27 THEN 2770              'exit on escape
  139. 1390   IF ASC(ST$) = 0 THEN ST% = ASC(RIGHT$(ST$,1)) ELSE ST% = ASC(ST$)
  140. 1400   IF ST% = 77 OR ST% = 54 THEN MOVE% = 1 : GOTO 1480       'right
  141. 1410   IF ST% = 81 OR ST% = 51 THEN MOVE% = 2 : GOTO 1480       'down and right
  142. 1420   IF ST% = 80 OR ST% = 50 THEN MOVE% = 3 : GOTO 1480       'down
  143. 1430   IF ST% = 79 OR ST% = 49 THEN MOVE% = 4 : GOTO 1480       'down and left
  144. 1440   IF ST% = 75 OR ST% = 52 THEN MOVE% = 5 : GOTO 1480       'left
  145. 1450   IF ST% = 71 OR ST% = 55 THEN MOVE% = 6 : GOTO 1480       'up and left
  146. 1460   IF ST% = 72 OR ST% = 56 THEN MOVE% = 7 : GOTO 1480       'up
  147. 1470   IF ST% = 73 OR ST% = 57 THEN MOVE% = 8                   'up and right
  148. 1480   BOARD%(YHEAD%,XHEAD%) = MOVE%                   'store next move
  149. 1490   ON MOVE% GOSUB 2000,2050,2100,2150,2200,2250,2300,2350   'move the head
  150. 1500   BOARD%(YHEAD%,XHEAD%) = 9         'SHOW WE ARE IN TRANSIT BUT STILL HERE
  151. 1510   SAVTAIL% = BOARD%(YTAIL%,XTAIL%)                'save the tail
  152. 1520   IF YTAIL%=24 AND XTAIL%=80 THEN ELSE LOCATE YTAIL%,XTAIL% : PRINT " ";
  153. 1530   BOARD%(YTAIL%,XTAIL%) = 0                       'free up space on board
  154. 1540   ON SAVTAIL% GOSUB 2040,2090,2140,2190,2240,2290,2340,2390 'move the tail
  155. 1550   IF TARGET AND XHEAD%=XTARGET% AND YHEAD%=YTARGET% THEN GOSUB 1820'SCORE!
  156. 1560   IF TARGET THEN IF RND * 100 >TOFF% THEN GOSUB 1760     'turn off target
  157. 1570   IF TARGET=0 THEN IF RND*100 > TON% THEN GOSUB 1900     'turn on target
  158. 1580 NEXT GROW
  159. 1590 '
  160. 1600 'after the appropriate number of moves, add to the length of snake
  161. 1610 IF SLEN% = MAXLENGTH% AND MAXLENGHT% THEN 1680           'hit the max
  162. 1620 IF OLDYT%=24 AND OLDXT%=80 THEN ELSE LOCATE OLDYT%,OLDXT% : PRINT "*";
  163. 1630 YTAIL% = OLDYT% : XTAIL% = OLDXT% : BOARD%(YTAIL%,XTAIL%) = SAVTAIL%
  164. 1640 SLEN% = SLEN% + 1                                           'add to length
  165. 1650 COLOR 0,15 : LOCATE 25,30 : PRINT SLEN%;
  166. 1660 IF SLEN% = MAXLENGTH% THEN LOCATE 25,18 : PRINT "MAX";
  167. 1670 COLOR 15,TRACER%,TRACER%
  168. 1680 IF WAITIME <= MAXSPEED THEN 1310
  169. 1690 WAITIME = WAITIME - WAITRATE
  170. 1700 COLOR 0,15
  171. 1710 LOCATE 25,50 : PRINT USING "####";(WAITIME / 10) * (ABS(WAITIME > 0));
  172. 1720 IF WAITIME <= MAXSPEED THEN LOCATE 25,38 : PRINT "MAX";
  173. 1730 COLOR 15,TRACER%,TRACER%
  174. 1740 GOTO 1310
  175. 1750 '
  176. 1760 '          test target turn off
  177. 1770 '
  178. 1780 TARGET = 0
  179. 1790 SOUND 100,1
  180. 1800 LOCATE YTARGET%,XTARGET% : PRINT " ";
  181. 1810 RETURN
  182. 1820 '
  183. 1830 '          score a hit
  184. 1840 '
  185. 1850 FOR T%=1 TO 3:SOUND 4000,.1:SOUND 3000,.1:SOUND 2000,.1:SOUND 1000,.1:NEXT
  186. 1860 SCORE = SCORE + TARGET : TARGET = 0
  187. 1870 COLOR 0,15 : LOCATE 25,9 : PRINT SCORE; : COLOR 15,TRACER%,TRACER%
  188. 1880 RETURN
  189. 1890 '
  190. 1900 '         set up a target
  191. 1910 TRY = 0
  192. 1920 IF TRY% = 15 THEN RETURN    'if snake gets long enough, we could have
  193. 1930 XTARGET% = RND*79 + 1       'trouble finding a place for a target
  194. 1940 YTARGET% = RND*23 + 1
  195. 1950 IF BOARD%(YTARGET%,XTARGET%) OR (YTARGET%=24 AND XTARGET%=80) THEN TRY% = TRY% + 1 : GOTO 1920
  196. 1960 TARGET = RND * 8 + 1
  197. 1970 LOCATE YTARGET%,XTARGET%
  198. 1980 PRINT USING "#";TARGET; : SOUND 4000,1
  199. 1990 RETURN
  200. 2000 '
  201. 2010 '   MOVE RIGHT AND CHECK THE POSITION
  202. 2020 '
  203. 2030 GOSUB 2480 : GOTO 2890                                 'HEAD
  204. 2040 GOSUB 2490 : RETURN                                    'TAIL
  205. 2050 '
  206. 2060 '   MOVE TO LOWER RIGHT AND CHECK THE POSITION
  207. 2070 '
  208. 2080 GOSUB 2480 : GOSUB 2500 : GOTO 2890                    'HEAD
  209. 2090 GOSUB 2490 : GOSUB 2510 : RETURN                       'TAIL
  210. 2100 '
  211. 2110 '   MOVE DOWN AND CHECK THE POSITION
  212. 2120 '
  213. 2130 GOSUB 2500 : GOTO 2890                                 'HEAD
  214. 2140 GOSUB 2510 : RETURN                                    'TAIL
  215. 2150 '
  216. 2160 '   MOVE TO LOWER LEFT AND CHECK THE POSITION
  217. 2170 '
  218. 2180 GOSUB 2500 : GOSUB 2460 : GOTO 2890                    'HEAD
  219. 2190 GOSUB 2510 : GOSUB 2470 : RETURN                       'TAIL
  220. 2200 '
  221. 2210 '   MOVE LEFT AND CHECK THE POSITION
  222. 2220 '
  223. 2230 GOSUB 2460 : GOTO 2890                                 'HEAD
  224. 2240 GOSUB 2470 : RETURN                                    'TAIL
  225. 2250 '
  226. 2260 '   MOVE TO UPPER LEFT AND CHECK THE POSITION
  227. 2270 '
  228. 2280 GOSUB 2460 : GOSUB 2440 : GOTO 2890                    'HEAD
  229. 2290 GOSUB 2470 : GOSUB 2450 : RETURN                       'TAIL
  230. 2300 '
  231. 2310 '   MOVE UP AND CHECK THE POSTION
  232. 2320 '
  233. 2330 GOSUB 2440 : GOTO 2890                                 'HEAD
  234. 2340 GOSUB 2450 : RETURN                                    'TAIL
  235. 2350 '
  236. 2360 '   MOVE TO UPPER RIGHT AND CHECK THE POSITION
  237. 2370 '
  238. 2380 GOSUB 2440 : GOSUB 2480 : GOTO 2890                    'HEAD
  239. 2390 GOSUB 2450 : GOSUB 2490 : RETURN                       'TAIL
  240. 2400 '
  241. 2410 '
  242. 2420 '   CHANGE THE HEAD AND TAIL POSITIONS FOR THE CORRECT MOVES
  243. 2430 '
  244. 2440 YHEAD% = (YHEAD% - 1) + (ABS(YHEAD% = 1) * 24) : RETURN    'GO UP    HEAD
  245. 2450 YTAIL% = (YTAIL% - 1) + (ABS(YTAIL% = 1) * 24) : RETURN    'GO UP    TAIL
  246. 2460 XHEAD% = (XHEAD% - 1) + (ABS(XHEAD% = 1) * 80) : RETURN    'GO LEFT  HEAD
  247. 2470 XTAIL% = (XTAIL% - 1) + (ABS(XTAIL% = 1) * 80) : RETURN    'GO LEFT  TAIL
  248. 2480 XHEAD% = (XHEAD% + 1) - (ABS(XHEAD% = 80) * 80): RETURN    'GO RIGHT HEAD
  249. 2490 XTAIL% = (XTAIL% + 1) - (ABS(XTAIL% = 80) * 80): RETURN    'GO RIGHT TAIL
  250. 2500 YHEAD% = (YHEAD% + 1) - (ABS(YHEAD% = 24) * 24): RETURN    'GO DOWN  HEAD
  251. 2510 YTAIL% = (YTAIL% + 1) - (ABS(YTAIL% = 24) * 24): RETURN    'GO DOWN  TAIL
  252. 2520 '
  253. 2530 '
  254. 2540 '   THEY WERE KILLED SO TELL THEM AND RESTART IF THEY WANT TO GO AGAIN
  255. 2550 '
  256. 2560 LOCATE 1,1
  257. 2570 PRINT "DEAD SNAKE!  Play Again   (Y or N) ";
  258. 2580 INPUT ASK$
  259. 2590 COLOR 15,ACOLOR%,ACOLOR% : CLS
  260. 2600 IF ASK$ = "N" OR ASK$ = "n" THEN 3100
  261. 2610 PRINT : PRINT "resetting playing field"
  262. 2620 FOR T% = 1 TO 80                    'reset the board to all zeros
  263. 2630      PRINT ".";
  264. 2640      FOR TT% = 1 TO 24
  265. 2650           BOARD(TT%,T%) = 0
  266. 2660      NEXT TT%
  267. 2670 NEXT T%
  268. 2680 GOSUB 3670                           'display the present options
  269. 2690 INPUT "Use these options for next play    (Y or N) ";ASK2$
  270. 2700 IF ASK2$ = "N" OR ASK2$ = "n" THEN PRINT : PRINT : GOTO 690
  271. 2710 WAITIME = VAL(W$) * 10 : WAITRATE = VAL(W$) : PRINT
  272. 2720 GOTO 1140
  273. 2730 '
  274. 2740 '
  275. 2750 '   THEY USED THE ESCAPE KEY, SO HANDLE IT
  276. 2760 '
  277. 2770 LOCATE 1,1 : PRINT "what's the matter, couldn't take the pressure??"
  278. 2780 PRINT : INPUT "Try again   (Y or N) ";ASK$ : GOTO 2590
  279. 2790 '
  280. 2800 '
  281. 2810 '   THEY USED THE PAUSE KEY, SO HANDLE IT
  282. 2820 '
  283. 2830 COLOR 0,15 : LOCATE 25,57 : PRINT "Any key to continue    ";
  284. 2840 A$ = "" : WHILE A$ = "" : A$ = INKEY$ : WEND
  285. 2850 LOCATE 25,57 : PRINT "ESC to Exit, P to Pause"; : COLOR 15,TRACER%,TRACER%
  286. 2860 RETURN
  287. 2870 '
  288. 2880 '
  289. 2890 '   CHECK TO SEE IF THE DIRECTION THAT THEY WANT IS VALID
  290. 2900 '
  291. 2910 IF BOARD%(YHEAD%,XHEAD%) THEN 2560
  292. 2920 IF OLDYH%=24 AND OLDXH%=80 THEN ELSE LOCATE OLDYH%,OLDXH%:PRINT "*";
  293. 2930 IF YHEAD%=24 AND XHEAD%=80 THEN ELSE LOCATE YHEAD%,XHEAD%:PRINT CHEAD$;
  294. 2940 RETURN
  295. 2950 '
  296. 2960 '
  297. 2970 '   ERROR, ERROR!!   THIS GIVES IT SOMEPLACE TO GO, NOTHING FANCY
  298. 2980 '
  299. 2990 PRINT "error ";ERR;" in line ";ERL
  300. 3000 END
  301. 3010 '
  302. 3020 '
  303. 3030 '   PRODUCE AN ERROR SOUND
  304. 3040 '
  305. 3050 SOUND 3000,1 : SOUND 1000,1 : RETURN
  306. 3060 '
  307. 3070 '
  308. 3080 '   END THE GAME IN A POLITE SORT OF MANNER
  309. 3090 '
  310. 3100 CLS
  311. 3110 LOCATE 12,18
  312. 3120 PRINT "Thank you for playing, hope you enjoyed it!"
  313. 3130 LOCATE 20,1
  314. 3140 END
  315. 3150 '
  316. 3160 '
  317. 3170 '   USE THE DEFAULT SETTINGS
  318. 3180 '
  319. 3190 IF DEFAULT% THEN 3270                    'if we already have the defaults
  320. 3200 PRINT : PRINT "Getting Info...."; : PRINT : GOSUB 3510 : GET #1,1
  321. 3210 IF LEFT$(WD$,1) = CHR$(0) THEN PRINT : PRINT "No default settings have been entered, please set them up" : PRINT : CLOSE : GOTO 3390
  322. 3220 W$ = MID$(STR$(CVI(WD$)),2) : S$ = MID$(STR$(CVI(SD$)),2)
  323. 3230 G$ = MID$(STR$(CVI(GD$)),2) : M$ = MID$(STR$(CVI(MD$)),2)
  324. 3240 E$ = MID$(STR$(CVI(ED$)),2) : L$ = MID$(STR$(CVI(LD$)),2)
  325. 3250 SCR$ = STR$(CVI(SCD$)) : TR$ = STR$(CVI(TD$))
  326. 3260 CLOSE #1
  327. 3270 WAITIME = VAL(W$) * 10 : WAITRATE = VAL(W$) : PRINT
  328. 3280 W = VAL(W$) : S = VAL(S$) : GROWTH = VAL(G$) : MAX% = VAL(M$)
  329. 3290 TON% = VAL(E$) * 2
  330. 3300 IF TON% = 0 THEN TOFF% = 0 : L$ = "" ELSE TOFF% = 100 - VAL(L$)
  331. 3310 ACOLOR% = VAL(SCR$)
  332. 3320 IF VAL(TR$)=1 OR ACOLOR%=0 THEN TRACER%=0:T$="Y" ELSE TRACER%=ACOLOR%:T$="N"
  333. 3330 DEFAULT% = 1
  334. 3340 IF SETTING% = 2 THEN RETURN ELSE GOTO 1090
  335. 3350 '
  336. 3360 '
  337. 3370 '   SET THEN USE THE DEFAULT SETTINGS
  338. 3380 '
  339. 3390 SETTING% = 1 : DEFAULT% = 0 : GOSUB 750
  340. 3400 PRINT : PRINT "Updating info file..." : PRINT : GOSUB 3510
  341. 3410 LSET WD$=MKI$(VAL(W$)) : LSET SD$=MKI$(VAL(S$)) : LSET GD$=MKI$(VAL(G$))
  342. 3420 LSET MD$=MKI$(VAL(M$)) : LSET ED$=MKI$(VAL(E$)) : LSET LD$=MKI$(VAL(L$))
  343. 3430 LSET SCD$ = MKI$(ACOLOR%)
  344. 3440 IF T$ = "Y" THEN LSET TD$ = MKI$(1) ELSE LSET TD$ = MKI$(0)
  345. 3450 PUT #1,1 : CLOSE
  346. 3460 SETTING% = 0 : DEFAULT% = 1 : GOTO 1090
  347. 3470 '
  348. 3480 '
  349. 3490 '   GET THE DEFAULT SETTINGS
  350. 3500 '
  351. 3510 OPEN "SLITHER.DAT" AS 1 LEN = 16
  352. 3520 FIELD #1,2 AS WD$,2 AS SD$,2 AS GD$,2 AS MD$,2 AS ED$,2 AS LD$,2 AS SCD$, 2 AS TD$
  353. 3530 RETURN
  354. 3540 '
  355. 3550 '
  356. 3560 '   DISPLAY THE DEFAULT OPTIONS
  357. 3570 '
  358. 3580 IF DEFAULT% THEN 3600
  359. 3590 SETTING% = 2 : GOSUB 3200 : SETTING% = 0
  360. 3600 PRINT : PRINT "The default settings are now :" : GOSUB 3670
  361. 3610 PRINT : PRINT : PRINT
  362. 3620 GOTO 700
  363. 3630 '
  364. 3640 '
  365. 3650 '   DISPLAY THE OPTIONS THAT WE HAVE
  366. 3660 '
  367. 3670 PRINT : PRINT
  368. 3680 PRINT "Starting Speed   ";W$         'see if they want the same options
  369. 3690 PRINT "Maximum Speed    ";S$
  370. 3700 PRINT "Growth Rate      ";G$
  371. 3710 PRINT "Maximum Size     ";
  372. 3720 IF VAL(M$) = 0 THEN PRINT "None" : PRINT ELSE PRINT M$
  373. 3730 PRINT "Target Frequency ";
  374. 3740 IF VAL(E$) = 50 THEN PRINT "No Targets" : PRINT : GOTO 2710 ELSE PRINT E$
  375. 3750 PRINT "Target duration  ";
  376. 3760 IF TOFF% = 0 THEN PRINT "on until scored" ELSE PRINT L$
  377. 3770 PRINT "Screen color is ";ACOLOR%
  378. 3780 PRINT "Trace Screen is ";
  379. 3790 IF T$ = "Y" THEN PRINT "on" ELSE PRINT "off"
  380. 3800 PRINT : PRINT
  381. 3810 RETURN
  382.