home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / newtron.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-10-04  |  3.4 KB  |  128 lines

  1. 10  'TRON.BAS
  2. 20  '
  3. 30  'A BETTER CYCLE RACE...
  4. 40  'NOT JUST A SNAKE - CLONE
  5. 50  CLEAR
  6. 60  DEFINT A-Z
  7. 70  SCREEN 1
  8. 80  COLOR 0,1
  9. 90  KEY OFF
  10. 100  CLS
  11. 110  LOCATE 3,17
  12. 120  PRINT "T R O N"
  13. 130  PRINT
  14. 140  PRINT
  15. 150  PRINT "Select your game ...
  16. 160  PRINT
  17. 170  PRINT "GAME     1   2   3   4   5   6   7   8
  18. 180  PRINT
  19. 190  PRINT "Players  1   1   1   1   2   2   2   2";
  20. 200  PRINT "Border   N   N   Y   Y   N   N   Y   Y";
  21. 210  PRINT "Blocks   N   Y   N   Y   N   Y   N   Y";
  22. 220  K$ = INKEY$
  23. 230  IF K$ = "" THEN 220
  24. 240  IF K$ < "1" OR K$ > "8" THEN 220
  25. 250  IF K$ < "5" THEN PLAYERS = 1 ELSE PLAYERS = 2
  26. 260  IF K$ < "3" OR (K$ > "4" AND K$ < "7") THEN BORDER = 0 ELSE BORDER = 1
  27. 270  IF VAL(K$) / 2 - INT(VAL(K$)/2) THEN BLOCKS = 0 ELSE BLOCKS = 1
  28. 280  PRINT
  29. 290  PRINT "Game selected ... ";K$
  30. 300  PRINT
  31. 310  PRINT "Do you want sound effects (Y/N) ? ";
  32. 320  K$ = INKEY$
  33. 330  IF K$ = "" THEN 320
  34. 340  IF INSTR("NnYy",K$) = 0 THEN 320
  35. 350  NOISE = -(INSTR("NnYy",K$) > 2)
  36. 360  IF NOISE THEN PRINT "YES" ELSE PRINT "NO"
  37. 370  PRINT
  38. 380  IF PLAYERS = 1 THEN 400
  39. 390  PRINT "Red plays the '\' and 'z' keys."
  40. 400  PRINT "Green plays the '.' and '/' keys."
  41. 410  PRINT "(for left and right turns).
  42. 420  PRINT
  43. 430  PRINT "PRESS THE SPACE BAR TO BEGIN !";
  44. 440  K$ = INKEY$
  45. 450  IF K$ <> " " THEN 440
  46. 460  '
  47. 470  WHILE NOT TIME.TO.QUIT
  48. 480  CLS
  49. 490  COLOR 1,0
  50. 500  RANDOMIZE VAL(MID$(TIME$,4,2) + RIGHT$(TIME$,2))
  51. 510  RESTORE
  52. 520  READ COUNT,XINC,YINC,XA,YA,XB,YB,CRASHFLAG
  53. 530  DATA 0,3,2,210,98,105,98,0
  54. 540  IF BLOCKS = 0 THEN 670
  55. 550  FOR I = 1 TO 3 + RND * 7
  56. 560  X1 = (INT(318 * RND) * XINC) MOD 318
  57. 570  X2 = (INT(318 * RND) * XINC) MOD 318
  58. 580  Y1 = (INT(200 * RND) * YINC) MOD 200
  59. 590  Y2 = (INT(200 * RND) * YINC) MOD 200
  60. 600  IF X1 > X2 THEN SWAP X1,X2
  61. 610  IF Y1 > Y2 THEN SWAP Y1,Y2
  62. 620  IF Y1 > 98 OR Y2 < 98 THEN 650
  63. 630  IF X1 <= 105 AND X2 >= 105 THEN 560
  64. 640  IF X1 <= 210 AND X2 >= 210 THEN 560
  65. 650  LINE (X1,Y1)-(X2,Y2),,BF
  66. 660  NEXT I
  67. 670  IF BORDER THEN LINE (XINC,YINC)-(318-XINC,200-YINC),,B
  68. 680  IF BORDER THEN PAINT (0,0)
  69. 690  DXA = INT(RND * 3 - 1)
  70. 700  DYA = INT(RND * 3 - 1)
  71. 710  IF ABS(DXA) = ABS(DYA) THEN 690
  72. 720  DXB = INT(RND * 3 - 1)
  73. 730  DYB = INT(RND * 3 - 1)
  74. 740  IF ABS(DXB) = ABS(DYB) THEN 720
  75. 750  K$ = INKEY$
  76. 760  IF K$ <> "" THEN 750
  77. 770  '
  78. 780  WHILE CRASHFLAG = 0
  79. 790  IF NOISE THEN SOUND 37,0
  80. 800  K$ = INKEY$
  81. 810  TURNS = 0
  82. 820  IF K$ = "." THEN SWAP DXA,DYA : DYA = -DYA
  83. 830  IF K$ = "/" THEN SWAP DXA,DYA : DXA = -DXA
  84. 840  IF PLAYERS = 1 THEN 880
  85. 850  IF K$ = "\" THEN SWAP DXB,DYB : DYB = -DYB
  86. 860  IF K$ = "z" THEN SWAP DXB,DYB : DXB = -DXB
  87. 870  GOTO 980
  88. 880  IF K$ <> "." AND K$ <> "/" THEN 910
  89. 890  SWAP DXB,DYB
  90. 900  IF RND < 0.5 THEN DYB = -DYB ELSE DXB = -DXB
  91. 910  XT = (XB + DXB * XINC + 318) MOD 318
  92. 920  YT = (YB + DYB * YINC + 200) MOD 200
  93. 930  IF POINT (XT,YT) = 0 THEN 980
  94. 940  DXB = -DXB
  95. 950  DYB = -DYB
  96. 960  TURNS = TURNS + 1
  97. 970  IF TURNS < 4 THEN 890
  98. 980  XA = (XA + DXA * XINC + 318) MOD 318
  99. 990  YA = (YA + DYA * YINC + 200) MOD 200
  100. 1000  XB = (XB + DXB * XINC + 318) MOD 318
  101. 1010  YB = (YB + DYB * YINC + 200) MOD 200
  102. 1020  IF NOISE THEN SOUND 37 + COUNT + COUNT,99
  103. 1030  IF POINT (XA,YA) THEN CRASHFLAG = 1
  104. 1040  LINE (XA,YA)-(XA+XINC-1,YA+YINC-1),1,BF
  105. 1050  IF POINT (XB,YB) THEN CRASHFLAG = 2
  106. 1060  LINE (XB,YB)-(XB+XINC-1,YB+YINC-1),2,BF
  107. 1070  COUNT = COUNT + 1
  108. 1080  WEND
  109. 1090  '
  110. 1100  IF NOISE THEN SOUND 37,0
  111. 1110  IF CRASHFLAG = 1 THEN PSET (XA,YA)
  112. 1120  IF CRASHFLAG = 2 THEN PSET (XB,YB)
  113. 1130  FOR I = 1 TO 17
  114. 1140  XR = RND * 130 - 65
  115. 1150  YR = RND * 100 - 50
  116. 1160  DRAW "C=CRASHFLAG;NM+=xr;,=yr;"
  117. 1170  IF NOISE THEN SOUND RND * 777 + 2222,1
  118. 1180  NEXT I
  119. 1190  IF CRASHFLAG = 1 THEN RED = RED + COUNT
  120. 1200  IF CRASHFLAG = 2 THEN GRE = GRE + COUNT
  121. 1210  LOCATE 1,1
  122. 1220  PRINT "Score ...   RED =";RED;"   GREEN =";GRE
  123. 1230  FOR DELAY = 1 TO 1111 STEP 5 + 17 * NOISE
  124. 1240  IF NOISE AND CRASHFLAG = 1 THEN SOUND 1148 - DELAY,1
  125. 1250  IF NOISE AND CRASHFLAG = 2 THEN SOUND 37 + DELAY,1
  126. 1260  NEXT DELAY
  127. 1270  WEND
  128.