basic101 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (598) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/.simplecov +1 -0
  4. data/.yardopts +7 -0
  5. data/Changelog.md +3 -0
  6. data/Gemfile +12 -0
  7. data/Gemfile.lock +75 -0
  8. data/LICENSE.md +9 -0
  9. data/README.md +193 -0
  10. data/Rakefile +14 -0
  11. data/VERSION +1 -0
  12. data/bin/basic101 +10 -0
  13. data/lib/basic101/abs_function.rb +19 -0
  14. data/lib/basic101/argument_checker.rb +61 -0
  15. data/lib/basic101/arguments.rb +32 -0
  16. data/lib/basic101/array_reference.rb +52 -0
  17. data/lib/basic101/asc_function.rb +17 -0
  18. data/lib/basic101/basic_array.rb +69 -0
  19. data/lib/basic101/basic_comparisons.rb +20 -0
  20. data/lib/basic101/basic_float.rb +48 -0
  21. data/lib/basic101/basic_integer.rb +48 -0
  22. data/lib/basic101/basic_math.rb +22 -0
  23. data/lib/basic101/basic_numeric.rb +96 -0
  24. data/lib/basic101/basic_object.rb +35 -0
  25. data/lib/basic101/basic_string.rb +85 -0
  26. data/lib/basic101/binary_operation.rb +32 -0
  27. data/lib/basic101/binary_operations.rb +26 -0
  28. data/lib/basic101/built_in_functions.rb +31 -0
  29. data/lib/basic101/chr_function.rb +17 -0
  30. data/lib/basic101/cos_function.rb +17 -0
  31. data/lib/basic101/data_statement.rb +24 -0
  32. data/lib/basic101/define_function_statement.rb +23 -0
  33. data/lib/basic101/dim_statement.rb +25 -0
  34. data/lib/basic101/else_statement.rb +22 -0
  35. data/lib/basic101/end_statement.rb +13 -0
  36. data/lib/basic101/endif_statement.rb +19 -0
  37. data/lib/basic101/errors.rb +50 -0
  38. data/lib/basic101/exp_function.rb +17 -0
  39. data/lib/basic101/for_stack.rb +48 -0
  40. data/lib/basic101/for_statement.rb +57 -0
  41. data/lib/basic101/function.rb +11 -0
  42. data/lib/basic101/function_call.rb +32 -0
  43. data/lib/basic101/function_identifier.rb +8 -0
  44. data/lib/basic101/functions.rb +39 -0
  45. data/lib/basic101/gosub_statement.rb +23 -0
  46. data/lib/basic101/goto_statement.rb +23 -0
  47. data/lib/basic101/identifier.rb +23 -0
  48. data/lib/basic101/identity.rb +18 -0
  49. data/lib/basic101/if_statement.rb +31 -0
  50. data/lib/basic101/input.rb +44 -0
  51. data/lib/basic101/input_reader.rb +55 -0
  52. data/lib/basic101/input_statement.rb +46 -0
  53. data/lib/basic101/int_function.rb +17 -0
  54. data/lib/basic101/left_function.rb +19 -0
  55. data/lib/basic101/len_function.rb +18 -0
  56. data/lib/basic101/let_statement.rb +24 -0
  57. data/lib/basic101/line.rb +32 -0
  58. data/lib/basic101/log_function.rb +17 -0
  59. data/lib/basic101/main.rb +24 -0
  60. data/lib/basic101/mid_function.rb +20 -0
  61. data/lib/basic101/negate_operation.rb +21 -0
  62. data/lib/basic101/next_statement.rb +34 -0
  63. data/lib/basic101/not_operation.rb +23 -0
  64. data/lib/basic101/null_prompt_delimeter.rb +12 -0
  65. data/lib/basic101/null_transcript.rb +20 -0
  66. data/lib/basic101/numeric_identifier.rb +16 -0
  67. data/lib/basic101/on_goto_statement.rb +29 -0
  68. data/lib/basic101/output.rb +73 -0
  69. data/lib/basic101/parser.rb +457 -0
  70. data/lib/basic101/power_operation.rb +24 -0
  71. data/lib/basic101/print_comma.rb +20 -0
  72. data/lib/basic101/print_semicolon.rb +19 -0
  73. data/lib/basic101/print_statement.rb +33 -0
  74. data/lib/basic101/program.rb +100 -0
  75. data/lib/basic101/program_counter.rb +52 -0
  76. data/lib/basic101/prompt_delimeter.rb +13 -0
  77. data/lib/basic101/randomize_statement.rb +13 -0
  78. data/lib/basic101/read_statement.rb +25 -0
  79. data/lib/basic101/reference.rb +25 -0
  80. data/lib/basic101/remark_statement.rb +12 -0
  81. data/lib/basic101/restore_statement.rb +23 -0
  82. data/lib/basic101/return_statement.rb +16 -0
  83. data/lib/basic101/right_function.rb +19 -0
  84. data/lib/basic101/rnd_function.rb +24 -0
  85. data/lib/basic101/runtime.rb +132 -0
  86. data/lib/basic101/scalar_reference.rb +19 -0
  87. data/lib/basic101/sgn_function.rb +17 -0
  88. data/lib/basic101/sin_function.rb +17 -0
  89. data/lib/basic101/sqr_function.rb +17 -0
  90. data/lib/basic101/statement.rb +36 -0
  91. data/lib/basic101/stop_statement.rb +14 -0
  92. data/lib/basic101/str_function.rb +16 -0
  93. data/lib/basic101/string_identifier.rb +16 -0
  94. data/lib/basic101/tab.rb +18 -0
  95. data/lib/basic101/tab_function.rb +17 -0
  96. data/lib/basic101/tan_function.rb +17 -0
  97. data/lib/basic101/transcript.rb +37 -0
  98. data/lib/basic101/transform.rb +264 -0
  99. data/lib/basic101/user_defined_function.rb +54 -0
  100. data/lib/basic101/val_function.rb +16 -0
  101. data/lib/basic101.rb +93 -0
  102. data/rake_tasks/default.rake +1 -0
  103. data/rake_tasks/integration.rake +8 -0
  104. data/rake_tasks/jeweler.rake +28 -0
  105. data/rake_tasks/spec.rake +8 -0
  106. data/rake_tasks/test.rake +2 -0
  107. data/rake_tasks/yard.rake +3 -0
  108. data/test/integration/arguments.rb +25 -0
  109. data/test/integration/errors.rb +7 -0
  110. data/test/integration/integration_test.rb +28 -0
  111. data/test/integration/main.rb +49 -0
  112. data/test/integration/output_file.rb +40 -0
  113. data/test/integration/test.rb +135 -0
  114. data/test/integration/tests/basic_computer_games/23-match.bas +64 -0
  115. data/test/integration/tests/basic_computer_games/23-match.input +1 -0
  116. data/test/integration/tests/basic_computer_games/23-match.output +29 -0
  117. data/test/integration/tests/basic_computer_games/3dplot.bas +17 -0
  118. data/test/integration/tests/basic_computer_games/3dplot.input +0 -0
  119. data/test/integration/tests/basic_computer_games/3dplot.output +47 -0
  120. data/test/integration/tests/basic_computer_games/aceyducy.bas +100 -0
  121. data/test/integration/tests/basic_computer_games/aceyducy.input +8 -0
  122. data/test/integration/tests/basic_computer_games/aceyducy.output +78 -0
  123. data/test/integration/tests/basic_computer_games/amazing.bas +138 -0
  124. data/test/integration/tests/basic_computer_games/amazing.input +1 -0
  125. data/test/integration/tests/basic_computer_games/amazing.output +32 -0
  126. data/test/integration/tests/basic_computer_games/animal.bas +71 -0
  127. data/test/integration/tests/basic_computer_games/animal.input +17 -0
  128. data/test/integration/tests/basic_computer_games/animal.output +38 -0
  129. data/test/integration/tests/basic_computer_games/awari.bas +70 -0
  130. data/test/integration/tests/basic_computer_games/awari.input +11 -0
  131. data/test/integration/tests/basic_computer_games/awari.output +117 -0
  132. data/test/integration/tests/basic_computer_games/bagels.bas +81 -0
  133. data/test/integration/tests/basic_computer_games/bagels.input +12 -0
  134. data/test/integration/tests/basic_computer_games/bagels.output +42 -0
  135. data/test/integration/tests/basic_computer_games/banner.bas +94 -0
  136. data/test/integration/tests/basic_computer_games/banner.input +6 -0
  137. data/test/integration/tests/basic_computer_games/banner.output +135 -0
  138. data/test/integration/tests/basic_computer_games/basketbl.bas +196 -0
  139. data/test/integration/tests/basic_computer_games/basketbl.input +46 -0
  140. data/test/integration/tests/basic_computer_games/basketbl.output +509 -0
  141. data/test/integration/tests/basic_computer_games/batnum.bas +90 -0
  142. data/test/integration/tests/basic_computer_games/batnum.input +14 -0
  143. data/test/integration/tests/basic_computer_games/batnum.output +67 -0
  144. data/test/integration/tests/basic_computer_games/battle.bas +196 -0
  145. data/test/integration/tests/basic_computer_games/battle.input +21 -0
  146. data/test/integration/tests/basic_computer_games/battle.output +118 -0
  147. data/test/integration/tests/basic_computer_games/blackjck.bas +321 -0
  148. data/test/integration/tests/basic_computer_games/blackjck.input +26 -0
  149. data/test/integration/tests/basic_computer_games/blackjck.output +144 -0
  150. data/test/integration/tests/basic_computer_games/bombard.bas +93 -0
  151. data/test/integration/tests/basic_computer_games/bombard.input +20 -0
  152. data/test/integration/tests/basic_computer_games/bombard.output +175 -0
  153. data/test/integration/tests/basic_computer_games/bounce.bas +53 -0
  154. data/test/integration/tests/basic_computer_games/bounce.input +0 -0
  155. data/test/integration/tests/basic_computer_games/bounce.output +15 -0
  156. data/test/integration/tests/basic_computer_games/bowling.bas +101 -0
  157. data/test/integration/tests/basic_computer_games/bowling.input +23 -0
  158. data/test/integration/tests/basic_computer_games/bowling.output +229 -0
  159. data/test/integration/tests/basic_computer_games/boxing.bas +142 -0
  160. data/test/integration/tests/basic_computer_games/boxing.input +8 -0
  161. data/test/integration/tests/basic_computer_games/boxing.output +47 -0
  162. data/test/integration/tests/basic_computer_games/bug.bas +256 -0
  163. data/test/integration/tests/basic_computer_games/bug.input +17 -0
  164. data/test/integration/tests/basic_computer_games/bug.output +847 -0
  165. data/test/integration/tests/basic_computer_games/bullfght.bas +193 -0
  166. data/test/integration/tests/basic_computer_games/bullfght.input +4 -0
  167. data/test/integration/tests/basic_computer_games/bullfght.output +60 -0
  168. data/test/integration/tests/basic_computer_games/bullseye.bas +37 -0
  169. data/test/integration/tests/basic_computer_games/bullseye.input +10 -0
  170. data/test/integration/tests/basic_computer_games/bullseye.output +79 -0
  171. data/test/integration/tests/basic_computer_games/bunny.bas +40 -0
  172. data/test/integration/tests/basic_computer_games/bunny.input +0 -0
  173. data/test/integration/tests/basic_computer_games/bunny.output +67 -0
  174. data/test/integration/tests/basic_computer_games/buzzword.bas +25 -0
  175. data/test/integration/tests/basic_computer_games/buzzword.input +4 -0
  176. data/test/integration/tests/basic_computer_games/buzzword.output +25 -0
  177. data/test/integration/tests/basic_computer_games/calendar.bas +58 -0
  178. data/test/integration/tests/basic_computer_games/calendar.input +0 -0
  179. data/test/integration/tests/basic_computer_games/calendar.output +213 -0
  180. data/test/integration/tests/basic_computer_games/change.bas +51 -0
  181. data/test/integration/tests/basic_computer_games/change.input +4 -0
  182. data/test/integration/tests/basic_computer_games/change.output +28 -0
  183. data/test/integration/tests/basic_computer_games/checkers.bas +82 -0
  184. data/test/integration/tests/basic_computer_games/checkers.input +74 -0
  185. data/test/integration/tests/basic_computer_games/checkers.output +673 -0
  186. data/test/integration/tests/basic_computer_games/chemist.bas +27 -0
  187. data/test/integration/tests/basic_computer_games/chemist.input +11 -0
  188. data/test/integration/tests/basic_computer_games/chemist.output +54 -0
  189. data/test/integration/tests/basic_computer_games/chief.bas +51 -0
  190. data/test/integration/tests/basic_computer_games/chief.input +5 -0
  191. data/test/integration/tests/basic_computer_games/chief.output +19 -0
  192. data/test/integration/tests/basic_computer_games/chomp.bas +104 -0
  193. data/test/integration/tests/basic_computer_games/chomp.input +15 -0
  194. data/test/integration/tests/basic_computer_games/chomp.output +159 -0
  195. data/test/integration/tests/basic_computer_games/combat.bas +124 -0
  196. data/test/integration/tests/basic_computer_games/combat.input +7 -0
  197. data/test/integration/tests/basic_computer_games/combat.output +33 -0
  198. data/test/integration/tests/basic_computer_games/craps.bas +82 -0
  199. data/test/integration/tests/basic_computer_games/craps.input +9 -0
  200. data/test/integration/tests/basic_computer_games/craps.output +51 -0
  201. data/test/integration/tests/basic_computer_games/cube.bas +161 -0
  202. data/test/integration/tests/basic_computer_games/cube.input +25 -0
  203. data/test/integration/tests/basic_computer_games/cube.output +72 -0
  204. data/test/integration/tests/basic_computer_games/depthchg.bas +33 -0
  205. data/test/integration/tests/basic_computer_games/depthchg.input +16 -0
  206. data/test/integration/tests/basic_computer_games/depthchg.output +83 -0
  207. data/test/integration/tests/basic_computer_games/diamond.bas +27 -0
  208. data/test/integration/tests/basic_computer_games/diamond.input +1 -0
  209. data/test/integration/tests/basic_computer_games/diamond.output +65 -0
  210. data/test/integration/tests/basic_computer_games/dice.bas +31 -0
  211. data/test/integration/tests/basic_computer_games/dice.input +4 -0
  212. data/test/integration/tests/basic_computer_games/dice.output +46 -0
  213. data/test/integration/tests/basic_computer_games/digits.bas +78 -0
  214. data/test/integration/tests/basic_computer_games/digits.input +5 -0
  215. data/test/integration/tests/basic_computer_games/digits.output +70 -0
  216. data/test/integration/tests/basic_computer_games/evenwin1.bas +128 -0
  217. data/test/integration/tests/basic_computer_games/evenwin1.input +13 -0
  218. data/test/integration/tests/basic_computer_games/evenwin1.output +116 -0
  219. data/test/integration/tests/basic_computer_games/evenwin2.bas +70 -0
  220. data/test/integration/tests/basic_computer_games/evenwin2.input +14 -0
  221. data/test/integration/tests/basic_computer_games/evenwin2.output +56 -0
  222. data/test/integration/tests/basic_computer_games/flipflop.bas +79 -0
  223. data/test/integration/tests/basic_computer_games/flipflop.input +8 -0
  224. data/test/integration/tests/basic_computer_games/flipflop.output +45 -0
  225. data/test/integration/tests/basic_computer_games/footbal1.bas +298 -0
  226. data/test/integration/tests/basic_computer_games/footbal1.input +13 -0
  227. data/test/integration/tests/basic_computer_games/footbal1.output +315 -0
  228. data/test/integration/tests/basic_computer_games/footbal2.bas +181 -0
  229. data/test/integration/tests/basic_computer_games/footbal2.input +23 -0
  230. data/test/integration/tests/basic_computer_games/footbal2.output +318 -0
  231. data/test/integration/tests/basic_computer_games/furtradr.bas +170 -0
  232. data/test/integration/tests/basic_computer_games/furtradr.input +20 -0
  233. data/test/integration/tests/basic_computer_games/furtradr.output +133 -0
  234. data/test/integration/tests/basic_computer_games/golf.bas +244 -0
  235. data/test/integration/tests/basic_computer_games/golf.input +11 -0
  236. data/test/integration/tests/basic_computer_games/golf.output +69 -0
  237. data/test/integration/tests/basic_computer_games/gomoko.bas +54 -0
  238. data/test/integration/tests/basic_computer_games/gomoko.input +6 -0
  239. data/test/integration/tests/basic_computer_games/gomoko.output +66 -0
  240. data/test/integration/tests/basic_computer_games/guess.bas +40 -0
  241. data/test/integration/tests/basic_computer_games/guess.input +8 -0
  242. data/test/integration/tests/basic_computer_games/guess.output +37 -0
  243. data/test/integration/tests/basic_computer_games/gunner.bas +52 -0
  244. data/test/integration/tests/basic_computer_games/gunner.input +18 -0
  245. data/test/integration/tests/basic_computer_games/gunner.output +91 -0
  246. data/test/integration/tests/basic_computer_games/hamurabi.bas +119 -0
  247. data/test/integration/tests/basic_computer_games/hamurabi.input +7 -0
  248. data/test/integration/tests/basic_computer_games/hamurabi.output +51 -0
  249. data/test/integration/tests/basic_computer_games/hangman.bas +81 -0
  250. data/test/integration/tests/basic_computer_games/hangman.input +69 -0
  251. data/test/integration/tests/basic_computer_games/hangman.output +889 -0
  252. data/test/integration/tests/basic_computer_games/hello.bas +83 -0
  253. data/test/integration/tests/basic_computer_games/hello.input +7 -0
  254. data/test/integration/tests/basic_computer_games/hello.output +46 -0
  255. data/test/integration/tests/basic_computer_games/hexapawn.bas +174 -0
  256. data/test/integration/tests/basic_computer_games/hexapawn.input +38 -0
  257. data/test/integration/tests/basic_computer_games/hexapawn.output +521 -0
  258. data/test/integration/tests/basic_computer_games/hi-q.bas +135 -0
  259. data/test/integration/tests/basic_computer_games/hi-q.input +14 -0
  260. data/test/integration/tests/basic_computer_games/hi-q.output +115 -0
  261. data/test/integration/tests/basic_computer_games/hilo.bas +29 -0
  262. data/test/integration/tests/basic_computer_games/hilo.input +20 -0
  263. data/test/integration/tests/basic_computer_games/hilo.output +76 -0
  264. data/test/integration/tests/basic_computer_games/hockey.bas +210 -0
  265. data/test/integration/tests/basic_computer_games/hockey.input +59 -0
  266. data/test/integration/tests/basic_computer_games/hockey.output +243 -0
  267. data/test/integration/tests/basic_computer_games/horsrace.bas +130 -0
  268. data/test/integration/tests/basic_computer_games/horsrace.input +11 -0
  269. data/test/integration/tests/basic_computer_games/horsrace.output +517 -0
  270. data/test/integration/tests/basic_computer_games/hurkle.bas +51 -0
  271. data/test/integration/tests/basic_computer_games/hurkle.input +16 -0
  272. data/test/integration/tests/basic_computer_games/hurkle.output +81 -0
  273. data/test/integration/tests/basic_computer_games/kinema.bas +34 -0
  274. data/test/integration/tests/basic_computer_games/kinema.input +9 -0
  275. data/test/integration/tests/basic_computer_games/kinema.output +64 -0
  276. data/test/integration/tests/basic_computer_games/king.bas +268 -0
  277. data/test/integration/tests/basic_computer_games/king.input +7 -0
  278. data/test/integration/tests/basic_computer_games/king.output +57 -0
  279. data/test/integration/tests/basic_computer_games/lem.bas +246 -0
  280. data/test/integration/tests/basic_computer_games/lem.input +4 -0
  281. data/test/integration/tests/basic_computer_games/lem.output +68 -0
  282. data/test/integration/tests/basic_computer_games/letter.bas +26 -0
  283. data/test/integration/tests/basic_computer_games/letter.input +24 -0
  284. data/test/integration/tests/basic_computer_games/letter.output +123 -0
  285. data/test/integration/tests/basic_computer_games/life.bas +66 -0
  286. data/test/integration/tests/basic_computer_games/life.input +4 -0
  287. data/test/integration/tests/basic_computer_games/life.options +1 -0
  288. data/test/integration/tests/basic_computer_games/life.output +200 -0
  289. data/test/integration/tests/basic_computer_games/life2.bas +83 -0
  290. data/test/integration/tests/basic_computer_games/life2.input +17 -0
  291. data/test/integration/tests/basic_computer_games/life2.output +113 -0
  292. data/test/integration/tests/basic_computer_games/litquiz.bas +49 -0
  293. data/test/integration/tests/basic_computer_games/litquiz.input +4 -0
  294. data/test/integration/tests/basic_computer_games/litquiz.output +36 -0
  295. data/test/integration/tests/basic_computer_games/love.bas +34 -0
  296. data/test/integration/tests/basic_computer_games/love.input +1 -0
  297. data/test/integration/tests/basic_computer_games/love.output +67 -0
  298. data/test/integration/tests/basic_computer_games/lunar.bas +48 -0
  299. data/test/integration/tests/basic_computer_games/lunar.input +87 -0
  300. data/test/integration/tests/basic_computer_games/lunar.output +195 -0
  301. data/test/integration/tests/basic_computer_games/mastrmnd.bas +232 -0
  302. data/test/integration/tests/basic_computer_games/mastrmnd.input +18 -0
  303. data/test/integration/tests/basic_computer_games/mastrmnd.output +67 -0
  304. data/test/integration/tests/basic_computer_games/mathdice.bas +60 -0
  305. data/test/integration/tests/basic_computer_games/mathdice.input +4 -0
  306. data/test/integration/tests/basic_computer_games/mathdice.output +86 -0
  307. data/test/integration/tests/basic_computer_games/mugwump.bas +56 -0
  308. data/test/integration/tests/basic_computer_games/mugwump.input +16 -0
  309. data/test/integration/tests/basic_computer_games/mugwump.output +139 -0
  310. data/test/integration/tests/basic_computer_games/name.bas +25 -0
  311. data/test/integration/tests/basic_computer_games/name.input +2 -0
  312. data/test/integration/tests/basic_computer_games/name.output +22 -0
  313. data/test/integration/tests/basic_computer_games/nicoma.bas +34 -0
  314. data/test/integration/tests/basic_computer_games/nicoma.input +8 -0
  315. data/test/integration/tests/basic_computer_games/nicoma.output +36 -0
  316. data/test/integration/tests/basic_computer_games/nim.bas +156 -0
  317. data/test/integration/tests/basic_computer_games/nim.input +8 -0
  318. data/test/integration/tests/basic_computer_games/nim.output +30 -0
  319. data/test/integration/tests/basic_computer_games/number.bas +37 -0
  320. data/test/integration/tests/basic_computer_games/number.input +19 -0
  321. data/test/integration/tests/basic_computer_games/number.output +73 -0
  322. data/test/integration/tests/basic_computer_games/onecheck.bas +86 -0
  323. data/test/integration/tests/basic_computer_games/onecheck.input +6 -0
  324. data/test/integration/tests/basic_computer_games/onecheck.output +77 -0
  325. data/test/integration/tests/basic_computer_games/orbit.bas +96 -0
  326. data/test/integration/tests/basic_computer_games/orbit.input +10 -0
  327. data/test/integration/tests/basic_computer_games/orbit.output +113 -0
  328. data/test/integration/tests/basic_computer_games/pizza.bas +68 -0
  329. data/test/integration/tests/basic_computer_games/pizza.input +10 -0
  330. data/test/integration/tests/basic_computer_games/pizza.output +93 -0
  331. data/test/integration/tests/basic_computer_games/poetry.bas +42 -0
  332. data/test/integration/tests/basic_computer_games/poetry.input +0 -0
  333. data/test/integration/tests/basic_computer_games/poetry.options +1 -0
  334. data/test/integration/tests/basic_computer_games/poetry.output +50 -0
  335. data/test/integration/tests/basic_computer_games/poker.bas +416 -0
  336. data/test/integration/tests/basic_computer_games/poker.input +34 -0
  337. data/test/integration/tests/basic_computer_games/poker.output +197 -0
  338. data/test/integration/tests/basic_computer_games/queen.bas +168 -0
  339. data/test/integration/tests/basic_computer_games/queen.input +10 -0
  340. data/test/integration/tests/basic_computer_games/queen.output +133 -0
  341. data/test/integration/tests/basic_computer_games/reverse.bas +62 -0
  342. data/test/integration/tests/basic_computer_games/reverse.input +12 -0
  343. data/test/integration/tests/basic_computer_games/reverse.output +79 -0
  344. data/test/integration/tests/basic_computer_games/rocket.bas +71 -0
  345. data/test/integration/tests/basic_computer_games/rocket.input +42 -0
  346. data/test/integration/tests/basic_computer_games/rocket.output +149 -0
  347. data/test/integration/tests/basic_computer_games/rocksp.bas +33 -0
  348. data/test/integration/tests/basic_computer_games/rocksp.input +9 -0
  349. data/test/integration/tests/basic_computer_games/rocksp.output +69 -0
  350. data/test/integration/tests/basic_computer_games/roulette.bas +239 -0
  351. data/test/integration/tests/basic_computer_games/roulette.input +9 -0
  352. data/test/integration/tests/basic_computer_games/roulette.output +98 -0
  353. data/test/integration/tests/basic_computer_games/rusrou.bas +26 -0
  354. data/test/integration/tests/basic_computer_games/rusrou.input +9 -0
  355. data/test/integration/tests/basic_computer_games/rusrou.output +50 -0
  356. data/test/integration/tests/basic_computer_games/salvo.bas +329 -0
  357. data/test/integration/tests/basic_computer_games/salvo.input +21 -0
  358. data/test/integration/tests/basic_computer_games/salvo.output +49 -0
  359. data/test/integration/tests/basic_computer_games/sinewave.bas +17 -0
  360. data/test/integration/tests/basic_computer_games/sinewave.input +0 -0
  361. data/test/integration/tests/basic_computer_games/sinewave.output +168 -0
  362. data/test/integration/tests/basic_computer_games/slalom.bas +165 -0
  363. data/test/integration/tests/basic_computer_games/slalom.input +20 -0
  364. data/test/integration/tests/basic_computer_games/slalom.output +122 -0
  365. data/test/integration/tests/basic_computer_games/slots.bas +134 -0
  366. data/test/integration/tests/basic_computer_games/slots.input +2 -0
  367. data/test/integration/tests/basic_computer_games/slots.output +20 -0
  368. data/test/integration/tests/basic_computer_games/splat.bas +128 -0
  369. data/test/integration/tests/basic_computer_games/splat.input +9 -0
  370. data/test/integration/tests/basic_computer_games/splat.output +61 -0
  371. data/test/integration/tests/basic_computer_games/stars.bas +54 -0
  372. data/test/integration/tests/basic_computer_games/stars.input +15 -0
  373. data/test/integration/tests/basic_computer_games/stars.output +70 -0
  374. data/test/integration/tests/basic_computer_games/stock.bas +232 -0
  375. data/test/integration/tests/basic_computer_games/stock.input +30 -0
  376. data/test/integration/tests/basic_computer_games/stock.output +156 -0
  377. data/test/integration/tests/basic_computer_games/superstartrek.bas +425 -0
  378. data/test/integration/tests/basic_computer_games/superstartrek.input +21 -0
  379. data/test/integration/tests/basic_computer_games/superstartrek.output +151 -0
  380. data/test/integration/tests/basic_computer_games/superstartrekins.bas +127 -0
  381. data/test/integration/tests/basic_computer_games/superstartrekins.input +1 -0
  382. data/test/integration/tests/basic_computer_games/superstartrekins.output +134 -0
  383. data/test/integration/tests/basic_computer_games/synonym.bas +53 -0
  384. data/test/integration/tests/basic_computer_games/synonym.input +13 -0
  385. data/test/integration/tests/basic_computer_games/synonym.output +57 -0
  386. data/test/integration/tests/basic_computer_games/target.bas +51 -0
  387. data/test/integration/tests/basic_computer_games/target.input +2 -0
  388. data/test/integration/tests/basic_computer_games/target.output +39 -0
  389. data/test/integration/tests/basic_computer_games/tictac1.bas +69 -0
  390. data/test/integration/tests/basic_computer_games/tictac1.input +10 -0
  391. data/test/integration/tests/basic_computer_games/tictac1.output +49 -0
  392. data/test/integration/tests/basic_computer_games/tictac2.bas +114 -0
  393. data/test/integration/tests/basic_computer_games/tictac2.input +6 -0
  394. data/test/integration/tests/basic_computer_games/tictac2.output +104 -0
  395. data/test/integration/tests/basic_computer_games/towers.bas +125 -0
  396. data/test/integration/tests/basic_computer_games/towers.input +9 -0
  397. data/test/integration/tests/basic_computer_games/towers.output +70 -0
  398. data/test/integration/tests/basic_computer_games/train.bas +24 -0
  399. data/test/integration/tests/basic_computer_games/train.input +4 -0
  400. data/test/integration/tests/basic_computer_games/train.output +23 -0
  401. data/test/integration/tests/basic_computer_games/trap.bas +49 -0
  402. data/test/integration/tests/basic_computer_games/trap.input +7 -0
  403. data/test/integration/tests/basic_computer_games/trap.output +40 -0
  404. data/test/integration/tests/basic_computer_games/war.bas +68 -0
  405. data/test/integration/tests/basic_computer_games/war.input +11 -0
  406. data/test/integration/tests/basic_computer_games/war.output +54 -0
  407. data/test/integration/tests/basic_computer_games/weekday.bas +150 -0
  408. data/test/integration/tests/basic_computer_games/weekday.input +2 -0
  409. data/test/integration/tests/basic_computer_games/weekday.output +28 -0
  410. data/test/integration/tests/basic_computer_games/word.bas +65 -0
  411. data/test/integration/tests/basic_computer_games/word.input +6 -0
  412. data/test/integration/tests/basic_computer_games/word.output +0 -0
  413. data/test/integration/tests/fast/abs.bas +5 -0
  414. data/test/integration/tests/fast/abs.input +0 -0
  415. data/test/integration/tests/fast/abs.output +5 -0
  416. data/test/integration/tests/fast/add.bas +5 -0
  417. data/test/integration/tests/fast/add.input +0 -0
  418. data/test/integration/tests/fast/add.output +5 -0
  419. data/test/integration/tests/fast/and.bas +5 -0
  420. data/test/integration/tests/fast/and.input +0 -0
  421. data/test/integration/tests/fast/and.output +5 -0
  422. data/test/integration/tests/fast/array.bas +11 -0
  423. data/test/integration/tests/fast/array.input +0 -0
  424. data/test/integration/tests/fast/array.output +6 -0
  425. data/test/integration/tests/fast/asc.bas +1 -0
  426. data/test/integration/tests/fast/asc.input +0 -0
  427. data/test/integration/tests/fast/asc.output +1 -0
  428. data/test/integration/tests/fast/chr.bas +1 -0
  429. data/test/integration/tests/fast/chr.input +0 -0
  430. data/test/integration/tests/fast/chr.output +1 -0
  431. data/test/integration/tests/fast/cos.bas +1 -0
  432. data/test/integration/tests/fast/cos.input +0 -0
  433. data/test/integration/tests/fast/cos.output +1 -0
  434. data/test/integration/tests/fast/def_fn.bas +9 -0
  435. data/test/integration/tests/fast/def_fn.input +0 -0
  436. data/test/integration/tests/fast/def_fn.output +5 -0
  437. data/test/integration/tests/fast/divide.bas +5 -0
  438. data/test/integration/tests/fast/divide.input +0 -0
  439. data/test/integration/tests/fast/divide.output +5 -0
  440. data/test/integration/tests/fast/end.bas +3 -0
  441. data/test/integration/tests/fast/end.input +0 -0
  442. data/test/integration/tests/fast/end.output +1 -0
  443. data/test/integration/tests/fast/eq.bas +3 -0
  444. data/test/integration/tests/fast/eq.input +0 -0
  445. data/test/integration/tests/fast/eq.output +3 -0
  446. data/test/integration/tests/fast/exp.bas +2 -0
  447. data/test/integration/tests/fast/exp.input +0 -0
  448. data/test/integration/tests/fast/exp.output +2 -0
  449. data/test/integration/tests/fast/float.bas +3 -0
  450. data/test/integration/tests/fast/float.input +0 -0
  451. data/test/integration/tests/fast/float.output +2 -0
  452. data/test/integration/tests/fast/for_next.bas +61 -0
  453. data/test/integration/tests/fast/for_next.input +0 -0
  454. data/test/integration/tests/fast/for_next.output +46 -0
  455. data/test/integration/tests/fast/ge.bas +3 -0
  456. data/test/integration/tests/fast/ge.input +0 -0
  457. data/test/integration/tests/fast/ge.output +3 -0
  458. data/test/integration/tests/fast/gosub_return.bas +10 -0
  459. data/test/integration/tests/fast/gosub_return.input +0 -0
  460. data/test/integration/tests/fast/gosub_return.output +4 -0
  461. data/test/integration/tests/fast/goto.bas +3 -0
  462. data/test/integration/tests/fast/goto.input +0 -0
  463. data/test/integration/tests/fast/goto.output +1 -0
  464. data/test/integration/tests/fast/gt.bas +3 -0
  465. data/test/integration/tests/fast/gt.input +0 -0
  466. data/test/integration/tests/fast/gt.output +3 -0
  467. data/test/integration/tests/fast/if.bas +25 -0
  468. data/test/integration/tests/fast/if.input +0 -0
  469. data/test/integration/tests/fast/if.output +8 -0
  470. data/test/integration/tests/fast/input.bas +24 -0
  471. data/test/integration/tests/fast/input.input +10 -0
  472. data/test/integration/tests/fast/input.output +28 -0
  473. data/test/integration/tests/fast/int.bas +5 -0
  474. data/test/integration/tests/fast/int.input +0 -0
  475. data/test/integration/tests/fast/int.output +5 -0
  476. data/test/integration/tests/fast/integer_plus_string.bas +1 -0
  477. data/test/integration/tests/fast/integer_plus_string.input +0 -0
  478. data/test/integration/tests/fast/integer_plus_string.output +1 -0
  479. data/test/integration/tests/fast/invalid_argument.bas +1 -0
  480. data/test/integration/tests/fast/invalid_argument.input +0 -0
  481. data/test/integration/tests/fast/invalid_argument.output +1 -0
  482. data/test/integration/tests/fast/le.bas +3 -0
  483. data/test/integration/tests/fast/le.input +0 -0
  484. data/test/integration/tests/fast/le.output +3 -0
  485. data/test/integration/tests/fast/left.bas +1 -0
  486. data/test/integration/tests/fast/left.input +0 -0
  487. data/test/integration/tests/fast/left.output +1 -0
  488. data/test/integration/tests/fast/len.bas +2 -0
  489. data/test/integration/tests/fast/len.input +0 -0
  490. data/test/integration/tests/fast/len.output +2 -0
  491. data/test/integration/tests/fast/let.bas +6 -0
  492. data/test/integration/tests/fast/let.input +0 -0
  493. data/test/integration/tests/fast/let.output +4 -0
  494. data/test/integration/tests/fast/log.bas +1 -0
  495. data/test/integration/tests/fast/log.input +0 -0
  496. data/test/integration/tests/fast/log.output +1 -0
  497. data/test/integration/tests/fast/lt.bas +3 -0
  498. data/test/integration/tests/fast/lt.input +0 -0
  499. data/test/integration/tests/fast/lt.output +3 -0
  500. data/test/integration/tests/fast/math.output +0 -0
  501. data/test/integration/tests/fast/mid.bas +2 -0
  502. data/test/integration/tests/fast/mid.input +0 -0
  503. data/test/integration/tests/fast/mid.output +2 -0
  504. data/test/integration/tests/fast/multiply.bas +5 -0
  505. data/test/integration/tests/fast/multiply.input +0 -0
  506. data/test/integration/tests/fast/multiply.output +5 -0
  507. data/test/integration/tests/fast/ne.bas +3 -0
  508. data/test/integration/tests/fast/ne.input +0 -0
  509. data/test/integration/tests/fast/ne.output +3 -0
  510. data/test/integration/tests/fast/negate.bas +4 -0
  511. data/test/integration/tests/fast/negate.input +0 -0
  512. data/test/integration/tests/fast/negate.output +3 -0
  513. data/test/integration/tests/fast/not.bas +4 -0
  514. data/test/integration/tests/fast/not.input +0 -0
  515. data/test/integration/tests/fast/not.output +4 -0
  516. data/test/integration/tests/fast/on_goto.bas +6 -0
  517. data/test/integration/tests/fast/on_goto.input +0 -0
  518. data/test/integration/tests/fast/on_goto.output +2 -0
  519. data/test/integration/tests/fast/or.bas +5 -0
  520. data/test/integration/tests/fast/or.input +0 -0
  521. data/test/integration/tests/fast/or.output +5 -0
  522. data/test/integration/tests/fast/parentheses.bas +1 -0
  523. data/test/integration/tests/fast/parentheses.input +0 -0
  524. data/test/integration/tests/fast/parentheses.output +1 -0
  525. data/test/integration/tests/fast/power.bas +4 -0
  526. data/test/integration/tests/fast/power.input +0 -0
  527. data/test/integration/tests/fast/power.output +4 -0
  528. data/test/integration/tests/fast/print.bas +6 -0
  529. data/test/integration/tests/fast/print.input +0 -0
  530. data/test/integration/tests/fast/print.output +4 -0
  531. data/test/integration/tests/fast/read_data.bas +15 -0
  532. data/test/integration/tests/fast/read_data.input +0 -0
  533. data/test/integration/tests/fast/read_data.output +4 -0
  534. data/test/integration/tests/fast/rem.bas +1 -0
  535. data/test/integration/tests/fast/rem.input +0 -0
  536. data/test/integration/tests/fast/rem.output +0 -0
  537. data/test/integration/tests/fast/right.bas +1 -0
  538. data/test/integration/tests/fast/right.input +0 -0
  539. data/test/integration/tests/fast/right.output +1 -0
  540. data/test/integration/tests/fast/rnd.bas +5 -0
  541. data/test/integration/tests/fast/rnd.input +0 -0
  542. data/test/integration/tests/fast/rnd.output +5 -0
  543. data/test/integration/tests/fast/sgn.bas +5 -0
  544. data/test/integration/tests/fast/sgn.input +0 -0
  545. data/test/integration/tests/fast/sgn.output +5 -0
  546. data/test/integration/tests/fast/sin.bas +1 -0
  547. data/test/integration/tests/fast/sin.input +0 -0
  548. data/test/integration/tests/fast/sin.output +1 -0
  549. data/test/integration/tests/fast/sqr.bas +2 -0
  550. data/test/integration/tests/fast/sqr.input +0 -0
  551. data/test/integration/tests/fast/sqr.output +2 -0
  552. data/test/integration/tests/fast/stop.bas +3 -0
  553. data/test/integration/tests/fast/stop.input +0 -0
  554. data/test/integration/tests/fast/stop.output +2 -0
  555. data/test/integration/tests/fast/str.bas +3 -0
  556. data/test/integration/tests/fast/str.input +0 -0
  557. data/test/integration/tests/fast/str.output +3 -0
  558. data/test/integration/tests/fast/string_addition.bas +1 -0
  559. data/test/integration/tests/fast/string_addition.input +0 -0
  560. data/test/integration/tests/fast/string_addition.output +1 -0
  561. data/test/integration/tests/fast/string_comparisons.bas +7 -0
  562. data/test/integration/tests/fast/string_comparisons.input +0 -0
  563. data/test/integration/tests/fast/string_comparisons.output +4 -0
  564. data/test/integration/tests/fast/string_plus_integer.bas +1 -0
  565. data/test/integration/tests/fast/string_plus_integer.input +0 -0
  566. data/test/integration/tests/fast/string_plus_integer.output +1 -0
  567. data/test/integration/tests/fast/subtract.bas +5 -0
  568. data/test/integration/tests/fast/subtract.input +0 -0
  569. data/test/integration/tests/fast/subtract.output +5 -0
  570. data/test/integration/tests/fast/tab.bas +4 -0
  571. data/test/integration/tests/fast/tab.input +0 -0
  572. data/test/integration/tests/fast/tab.output +3 -0
  573. data/test/integration/tests/fast/tan.bas +1 -0
  574. data/test/integration/tests/fast/tan.input +0 -0
  575. data/test/integration/tests/fast/tan.output +1 -0
  576. data/test/integration/tests/fast/val.bas +3 -0
  577. data/test/integration/tests/fast/val.input +0 -0
  578. data/test/integration/tests/fast/val.output +3 -0
  579. data/test/spec/argument_checker_spec.rb +128 -0
  580. data/test/spec/basic_array_spec.rb +100 -0
  581. data/test/spec/basic_float_spec.rb +168 -0
  582. data/test/spec/basic_integer_spec.rb +270 -0
  583. data/test/spec/basic_numeric_spec.rb +16 -0
  584. data/test/spec/basic_object_spec.rb +22 -0
  585. data/test/spec/basic_string_spec.rb +259 -0
  586. data/test/spec/for_stack_spec.rb +70 -0
  587. data/test/spec/input_reader_spec.rb +143 -0
  588. data/test/spec/input_spec.rb +102 -0
  589. data/test/spec/line_spec.rb +18 -0
  590. data/test/spec/output_spec.rb +153 -0
  591. data/test/spec/parser_spec.rb +562 -0
  592. data/test/spec/program_spec.rb +45 -0
  593. data/test/spec/spec_helper.rb +15 -0
  594. data/test/spec/support/basic_numeric_helpers.rb +327 -0
  595. data/test/spec/support/basic_object_helpers.rb +22 -0
  596. data/test/spec/transcript_spec.rb +37 -0
  597. data/test/spec/transform_spec.rb +513 -0
  598. metadata +742 -0
@@ -0,0 +1,298 @@
1
+ 10 PRINT TAB(33);"FTBALL"
2
+ 20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 30 PRINT:PRINT
4
+ 220 PRINT "THIS IS DARTMOUTH CHAMPIONSHIP FOOTBALL.":PRINT
5
+ 230 PRINT "YOU WILL QUARTERBACK DARTMOUTH. CALL PLAYS AS FOLLOWS:"
6
+ 240 PRINT "1= SIMPLE RUN; 2= TRICKY RUN; 3= SHORT PASS;"
7
+ 250 PRINT "4= LONG PASS; 5= PUNT; 6= QUICK KICK; 7= PLACE KICK."
8
+ 260 PRINT
9
+ 270 PRINT "CHOOSE YOUR OPPONENT";
10
+ 280 INPUT O$(1)
11
+ 290 O$(0)="DARTMOUTH"
12
+ 300 PRINT
13
+ 310 LET S(0)=0: LET S(1)=0
14
+ 320 REM
15
+ 330 DIM L$(20)
16
+ 340 FOR I=1 TO 20: READ L$(I): NEXT I
17
+ 350 DATA "KICK","RECEIVE"," YARD ","RUN BACK FOR ","BALL ON "
18
+ 360 DATA "YARD LINE"," SIMPLE RUN"," TRICKY RUN"," SHORT PASS"
19
+ 370 DATA " LONG PASS","PUNT"," QUICK KICK "," PLACE KICK"," LOSS "
20
+ 380 DATA " NO GAIN","GAIN "," TOUCHDOWN "," TOUCHBACK ","SAFETY***"
21
+ 385 DATA "JUNK"
22
+ 390 LET P=INT(RND(1)*2)
23
+ 400 PRINT O$(P);" WON THE TOSS"
24
+ 410 DEF FNF(X)=1-2*P
25
+ 420 DEF FNG(Z)=P*(X1-X)+(1-P)*(X-X1)
26
+ 430 IF P=0 THEN 470
27
+ 440 PRINT O$(1);" ELECTS TO RECEIVE."
28
+ 450 PRINT
29
+ 460 GOTO 580
30
+ 470 PRINT "DO YOU ELECT TO KICK OR RECEIVE";
31
+ 480 INPUT A$
32
+ 490 PRINT
33
+ 500 FOR E=1 TO 2
34
+ 510 IF A$=L$(E) THEN 550
35
+ 520 NEXT E
36
+ 530 PRINT "INCORRECT ANSWER. PLEASE TYPE 'KICK' OR 'RECIEVE'";
37
+ 540 GOTO 480
38
+ 550 IF E=2 THEN 580
39
+ 560 LET P=1
40
+ 580 LET X=40+(1-P)*20
41
+ 590 LET Y=INT(200*(RND(1)-.5)^3+55)
42
+ 600 PRINT Y;L$(3);" KICKOFF"
43
+ 610 LET X=X-FNF(1)*Y
44
+ 620 IF ABS(X-50)>=50 THEN 700
45
+ 630 LET Y=INT(50*RND(1)^2)+(1-P)*INT(50*RND(1)^4)
46
+ 640 LET X=X+FNF(1)*Y
47
+ 650 IF ABS(X-50)>=50 THEN 655
48
+ 651 PRINT Y;L$(3);" RUNBACK"
49
+ 652 GOTO 720
50
+ 655 PRINT L$(4);
51
+ 660 GOTO 2600
52
+ 700 PRINT "TOUCHBACK FOR ";O$(P);"."
53
+ 710 LET X=20+P*60
54
+ 720 REM FIRST DOWN
55
+ 730 GOSUB 800
56
+ 740 LET X1=X
57
+ 750 LET D=1
58
+ 760 PRINT:PRINT "FIRST DOWN ";O$(P);"***"
59
+ 770 PRINT
60
+ 780 PRINT
61
+ 790 GOTO 860
62
+ 800 REM PRINT POSITION
63
+ 810 IF X>50 THEN 840
64
+ 820 PRINT L$(5);O$(0);X;L$(6)
65
+ 830 GOTO 850
66
+ 840 PRINT L$(5);O$(1);100-X;L$(6)
67
+ 850 RETURN
68
+ 860 REM NEW PLAY
69
+ 870 LET T=T+1
70
+ 880 IF T=30 THEN 1060
71
+ 890 IF T<50 THEN 940
72
+ 900 IF RND(1)>.2 THEN 940
73
+ 910 PRINT "END OF GAME ***"
74
+ 920 PRINT "FINAL SCORE: ";O$(0);": ";S(0);" ";O$(1);": ";S(1)
75
+ 930 STOP
76
+ 940 IF P=1 THEN 1870
77
+ 950 PRINT "NEXT PLAY";
78
+ 960 INPUT Z
79
+ 970 IF Z<>INT(Z) THEN 990
80
+ 980 IF ABS(Z-4)<=3 THEN 1010
81
+ 990 PRINT "ILLEGAL PLAY NUMBER, RETYPE";
82
+ 1000 GOTO 960
83
+ 1010 LET F=0
84
+ 1020 PRINT L$(Z+6);". ";
85
+ 1030 LET R=RND(1)*(.98+FNF(1)*.02)
86
+ 1040 LET R1=RND(1)
87
+ 1050 ON Z GOTO 1110,1150,1260,1480,1570,1570,1680
88
+ 1060 REM JEAN'S SPECIAL
89
+ 1070 IF RND(1)> 1/3 THEN 940
90
+ 1080 PRINT "GAME DELAYED. DOG ON FIELD."
91
+ 1090 PRINT
92
+ 1100 GOTO 940
93
+ 1110 REM SIMPLE RUN
94
+ 1120 LET Y=INT(24*(R-.5)^3+3)
95
+ 1130 IF RND(1)<.05 THEN 1180
96
+ 1140 GOTO 2190
97
+ 1150 REM TRICKY RUN
98
+ 1160 LET Y=INT(20*R-5)
99
+ 1170 IF RND(1)>.1 THEN 2190
100
+ 1180 LET F=-1
101
+ 1190 LET X3=X
102
+ 1200 LET X=X+FNF(1)*Y
103
+ 1210 IF ABS(X-50)>=50 THEN 1240
104
+ 1220 PRINT "*** FUMBLE AFTER ";
105
+ 1230 GOTO 2230
106
+ 1240 PRINT "*** FUMBLE."
107
+ 1250 GOTO 2450
108
+ 1260 REM SHORT PASS
109
+ 1270 LET Y=INT(60*(R1-.5)^3+10)
110
+ 1280 IF R<.05 THEN 1330
111
+ 1290 IF R<.15 THEN 1390
112
+ 1300 IF R<.55 THEN 1420
113
+ 1310 PRINT "COMPLETE. ";
114
+ 1320 GOTO 2190
115
+ 1330 IF D=4 THEN 1420
116
+ 1340 PRINT "INTERCEPTED."
117
+ 1350 LET F=-1
118
+ 1360 LET X=X+FNF(1)*Y
119
+ 1370 IF ABS(X-50)>=50 THEN 2450
120
+ 1380 GOTO 2300
121
+ 1390 PRINT "PASSER TACKLED. ";
122
+ 1400 LET Y=-INT(10*R1)
123
+ 1410 GOTO 2190
124
+ 1420 LET Y=0
125
+ 1430 IF RND(1)<.3 THEN 1460
126
+ 1440 PRINT "INCOMPLETE. ";
127
+ 1450 GOTO 2190
128
+ 1460 PRINT "BATTED DOWN. ";
129
+ 1470 GOTO 2190
130
+ 1480 REM LONG PASS
131
+ 1490 LET Y=INT(160*(R1-.5)^3+30)
132
+ 1500 IF R<.1 THEN 1330
133
+ 1510 IF R<.3 THEN 1540
134
+ 1520 IF R<.75 THEN 1420
135
+ 1530 GOTO 1310
136
+ 1540 PRINT "PASSER TACKLED. ";
137
+ 1550 LET Y=-INT(15*R1+3)
138
+ 1560 GOTO 2190
139
+ 1570 REM PUNT OR KICK
140
+ 1580 LET Y=INT(100*(R-.5)^3+35)
141
+ 1590 IF D=4 THEN 1610
142
+ 1600 LET Y=INT(Y*1.3)
143
+ 1610 PRINT Y;L$(3);" PUNT"
144
+ 1620 IF ABS(X+Y*FNF(1)-50)>=50 THEN 1670
145
+ 1630 IF D<4 THEN 1670
146
+ 1640 LET Y1=INT(R1^2*20)
147
+ 1650 PRINT Y1;L$(3);" RUN BACK"
148
+ 1660 LET Y=Y-Y1
149
+ 1670 GOTO 1350
150
+ 1680 REM PLACE KICK
151
+ 1690 LET Y=INT(100*(R-.5)^3+35)
152
+ 1700 IF R1>.15 THEN 1740
153
+ 1710 PRINT "KICK IS BLOCKED ***"
154
+ 1720 LET X=X-5*FNF(1)
155
+ 1730 LET P=1-P
156
+ 1740 GOTO 720
157
+ 1750 LET X=X+FNF(1)*Y
158
+ 1760 IF ABS(X-50)>=60 THEN 1810
159
+ 1770 PRINT "KICK IS SHORT."
160
+ 1780 IF ABS(X-50)>=50 THEN 2710
161
+ 1790 P=1-P
162
+ 1800 GOTO 630
163
+ 1810 IF R1>.5 THEN 1840
164
+ 1820 PRINT "KICK IS OFF TO THE SIDE."
165
+ 1830 GOTO 2710
166
+ 1840 PRINT "FIELD GOAL ***"
167
+ 1850 LET S(P)=S(P)+3
168
+ 1860 GOTO 2640
169
+ 1870 REM OPPONENT'S PLAY
170
+ 1880 IF D>1 THEN 1940
171
+ 1890 IF RND(1)>1/3 THEN 1920
172
+ 1900 LET Z=3
173
+ 1910 GOTO 1010
174
+ 1920 LET Z=1
175
+ 1930 GOTO 1010
176
+ 1940 IF D=4 THEN 2090
177
+ 1950 IF 10+X-X1<5 THEN 1890
178
+ 1960 IF X<5 THEN 1890
179
+ 1970 IF X<=10 THEN 2160
180
+ 1980 IF X>X1 THEN 2020
181
+ 1990 LET A=INT(2*RND(1))
182
+ 2000 LET Z=2+A*2
183
+ 2010 GOTO 1010
184
+ 2020 IF D<3 THEN 1990
185
+ 2030 IF X<45 THEN 1990
186
+ 2040 IF RND(1)>1/4 THEN 2070
187
+ 2050 LET Z=6
188
+ 2060 GOTO 1010
189
+ 2070 LET Z=4
190
+ 2080 GOTO 1010
191
+ 2090 IF X>30 THEN 2140
192
+ 2100 IF 10+X-X1<3 THEN 1890
193
+ 2110 IF X<3 THEN 1890
194
+ 2120 LET Z=7
195
+ 2130 GOTO 1010
196
+ 2140 LET Z=5
197
+ 2150 GOTO 1010
198
+ 2160 LET A=INT(2*RND(1))
199
+ 2170 LET Z=2+A
200
+ 2180 GOTO 1010
201
+ 2190 REM GAIN OR LOSS
202
+ 2200 LET X3=X
203
+ 2210 LET X=X+FNF(1)*Y
204
+ 2220 IF ABS(X-50)>=50 THEN 2450
205
+ 2230 IF Y=0 THEN 2250
206
+ 2240 PRINT ABS(Y);L$(3);
207
+ 2250 PRINT L$(15+SGN(Y))
208
+ 2280 IF ABS(X3-50)>40 THEN 2300
209
+ 2290 IF RND(1)<.1 THEN 2860
210
+ 2300 GOSUB 800
211
+ 2310 IF F=0 THEN 2340
212
+ 2320 LET P=1-P
213
+ 2330 GOTO 740
214
+ 2340 IF FNG(1)>=10 THEN 740
215
+ 2350 IF D=4 THEN 2320
216
+ 2360 LET D=D+1
217
+ 2370 PRINT "DOWN: ";D;" ";
218
+ 2380 IF (X1-50)*FNF(1)<40 THEN 2410
219
+ 2390 PRINT "GOAL TO GO"
220
+ 2400 GOTO 2420
221
+ 2410 PRINT "YARDS TO GO: ";10-FNG(1)
222
+ 2420 PRINT
223
+ 2430 PRINT
224
+ 2440 GOTO 860
225
+ 2450 REM BALL IN END-ZONE
226
+ 2460 IF X>=100 THEN 2490
227
+ 2470 LET E=0
228
+ 2480 GOTO 2500
229
+ 2490 LET E=1
230
+ 2500 ON 1+E-F*2+P*4 GOTO 2510,2590,2760,2710,2590,2510,2710,2760
231
+ 2510 REM SAFETY
232
+ 2520 LET S(1-P)=S(1-P)+2
233
+ 2530 PRINT L$(19)
234
+ 2540 GOSUB 2800
235
+ 2550 PRINT O$(P);" KICKS OFF FROM ITS 20 YARD LINE."
236
+ 2560 LET X=20+P*60
237
+ 2570 LET P=1-P
238
+ 2580 GOTO 590
239
+ 2590 REM OFFENSIVE TD
240
+ 2600 PRINT L$(17);"***"
241
+ 2610 IF RND(1)>.8 THEN 2680
242
+ 2620 LET S(P)=S(P)+7
243
+ 2630 PRINT "KICK IS GOOD."
244
+ 2640 GOSUB 2800
245
+ 2650 PRINT O$(P);" KICKS OFF"
246
+ 2660 LET P=1-P
247
+ 2670 GOTO 580
248
+ 2680 PRINT "KICK IS OFF TO THE SIDE"
249
+ 2690 LET S(P)=S(P)+6
250
+ 2700 GOTO 2640
251
+ 2710 REM TOUCHBACK
252
+ 2720 PRINT L$(18)
253
+ 2730 LET P=1-P
254
+ 2740 LET X=20+P*60
255
+ 2750 GOTO 720
256
+ 2760 REM DEFENSIVE TD
257
+ 2770 PRINT L$(17);"FOR ";O$(1-P);"***"
258
+ 2780 LET P=1-P
259
+ 2790 GOTO 2600
260
+ 2800 REM SCORE
261
+ 2810 PRINT
262
+ 2820 PRINT "SCORE: ";S(0);" TO ";S(1)
263
+ 2830 PRINT
264
+ 2840 PRINT
265
+ 2850 RETURN
266
+ 2860 REM PENALTY
267
+ 2870 LET P3=INT(2*RND(1))
268
+ 2880 PRINT O$(P3);" OFFSIDES -- PENALTY OF 5 YARDS."
269
+ 2890 PRINT
270
+ 2900 PRINT
271
+ 2910 IF P3=0 THEN 2980
272
+ 2920 PRINT "DO YOU ACCEPT THE PENALTY";
273
+ 2930 INPUT A$
274
+ 2940 IF A$="NO" THEN 2300
275
+ 2950 IF A$="YES" THEN 3110
276
+ 2960 PRINT "TYPE 'YES' OR 'NO'";
277
+ 2970 GOTO 2930
278
+ 2980 REM OPPONENT'S STRATEGY ON PENALTY
279
+ 2990 IF P=1 THEN 3040
280
+ 3000 IF Y<=0 THEN 3080
281
+ 3010 IF F<0 THEN 3080
282
+ 3020 IF FNG(1)<3*D-2 THEN 3080
283
+ 3030 GOTO 3100
284
+ 3040 IF Y<=5 THEN 3100
285
+ 3050 IF F<0 THEN 3100
286
+ 3060 IF D<4 THEN 3080
287
+ 3070 IF FNG(1)<10 THEN 3100
288
+ 3080 PRINT "PENALTY REFUSED."
289
+ 3090 GOTO 2300
290
+ 3100 PRINT "PENALTY ACCEPTED."
291
+ 3110 LET F=0
292
+ 3120 LET D=D-1
293
+ 3130 IF P<>P3 THEN 3160
294
+ 3140 LET X=X3-FNF(1)*5
295
+ 3150 GOTO 2300
296
+ 3160 LET X=X3+FNF(1)*5
297
+ 3170 GOTO 2300
298
+ 3180 END
@@ -0,0 +1,13 @@
1
+ FOOBAR
2
+ 1
3
+ 2
4
+ 3
5
+ 4
6
+ 5
7
+ 6
8
+ 7
9
+ 1
10
+ 2
11
+ 3
12
+ 4
13
+ 5
@@ -0,0 +1,315 @@
1
+ FTBALL
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+ THIS IS DARTMOUTH CHAMPIONSHIP FOOTBALL.
6
+
7
+ YOU WILL QUARTERBACK DARTMOUTH. CALL PLAYS AS FOLLOWS:
8
+ 1= SIMPLE RUN; 2= TRICKY RUN; 3= SHORT PASS;
9
+ 4= LONG PASS; 5= PUNT; 6= QUICK KICK; 7= PLACE KICK.
10
+
11
+ CHOOSE YOUR OPPONENT? FOOBAR
12
+
13
+ FOOBAR WON THE TOSS
14
+ FOOBAR ELECTS TO RECEIVE.
15
+
16
+ 56 YARD KICKOFF
17
+ 18 YARD RUNBACK
18
+ BALL ON FOOBAR 22 YARD LINE
19
+
20
+ FIRST DOWN FOOBAR***
21
+
22
+
23
+ SIMPLE RUN. 3 YARD GAIN
24
+ BALL ON FOOBAR 25 YARD LINE
25
+ DOWN: 2 YARDS TO GO: 7
26
+
27
+
28
+ TRICKY RUN. 10 YARD GAIN
29
+ BALL ON FOOBAR 35 YARD LINE
30
+
31
+ FIRST DOWN FOOBAR***
32
+
33
+
34
+ SHORT PASS. PASSER TACKLED. NO GAIN
35
+ BALL ON FOOBAR 35 YARD LINE
36
+ DOWN: 2 YARDS TO GO: 10
37
+
38
+
39
+ LONG PASS. COMPLETE. 47 YARD GAIN
40
+ BALL ON DARTMOUTH 18 YARD LINE
41
+
42
+ FIRST DOWN FOOBAR***
43
+
44
+
45
+ SIMPLE RUN. 3 YARD GAIN
46
+ BALL ON DARTMOUTH 15 YARD LINE
47
+ DOWN: 2 YARDS TO GO: 7
48
+
49
+
50
+ LONG PASS. BATTED DOWN. NO GAIN
51
+ BALL ON DARTMOUTH 15 YARD LINE
52
+ DOWN: 3 YARDS TO GO: 7
53
+
54
+
55
+ TRICKY RUN. 5 YARD GAIN
56
+ BALL ON DARTMOUTH 10 YARD LINE
57
+ DOWN: 4 YARDS TO GO: 2
58
+
59
+
60
+ SIMPLE RUN. 4 YARD GAIN
61
+ BALL ON DARTMOUTH 6 YARD LINE
62
+
63
+ FIRST DOWN FOOBAR***
64
+
65
+
66
+ SIMPLE RUN. NO GAIN
67
+ BALL ON DARTMOUTH 6 YARD LINE
68
+ DOWN: 2 GOAL TO GO
69
+
70
+
71
+ TRICKY RUN. 3 YARD LOSS
72
+ BALL ON DARTMOUTH 9 YARD LINE
73
+ DOWN: 3 GOAL TO GO
74
+
75
+
76
+ SHORT PASS. BATTED DOWN. NO GAIN
77
+ BALL ON DARTMOUTH 9 YARD LINE
78
+ DOWN: 4 GOAL TO GO
79
+
80
+
81
+ PLACE KICK. BALL ON DARTMOUTH 9 YARD LINE
82
+
83
+ FIRST DOWN FOOBAR***
84
+
85
+
86
+ SIMPLE RUN. 2 YARD GAIN
87
+ BALL ON DARTMOUTH 7 YARD LINE
88
+ DOWN: 2 GOAL TO GO
89
+
90
+
91
+ TRICKY RUN. 3 YARD LOSS
92
+ BALL ON DARTMOUTH 10 YARD LINE
93
+ DOWN: 3 GOAL TO GO
94
+
95
+
96
+ TRICKY RUN. *** FUMBLE AFTER 2 YARD GAIN
97
+ BALL ON DARTMOUTH 8 YARD LINE
98
+
99
+ FIRST DOWN DARTMOUTH***
100
+
101
+
102
+ NEXT PLAY? 1
103
+ SIMPLE RUN. 1 YARD GAIN
104
+ BALL ON DARTMOUTH 9 YARD LINE
105
+ DOWN: 2 YARDS TO GO: 9
106
+
107
+
108
+ NEXT PLAY? 2
109
+ TRICKY RUN. 14 YARD GAIN
110
+ BALL ON DARTMOUTH 23 YARD LINE
111
+
112
+ FIRST DOWN DARTMOUTH***
113
+
114
+
115
+ NEXT PLAY? 3
116
+ SHORT PASS. INTERCEPTED.
117
+ BALL ON DARTMOUTH 32 YARD LINE
118
+
119
+ FIRST DOWN FOOBAR***
120
+
121
+
122
+ SHORT PASS. INCOMPLETE. NO GAIN
123
+ BALL ON DARTMOUTH 32 YARD LINE
124
+ DOWN: 2 YARDS TO GO: 10
125
+
126
+
127
+ TRICKY RUN. 8 YARD GAIN
128
+ BALL ON DARTMOUTH 24 YARD LINE
129
+ DOWN: 3 YARDS TO GO: 2
130
+
131
+
132
+ SHORT PASS. COMPLETE. 14 YARD GAIN
133
+ BALL ON DARTMOUTH 10 YARD LINE
134
+
135
+ FIRST DOWN FOOBAR***
136
+
137
+
138
+ SIMPLE RUN. 1 YARD GAIN
139
+ BALL ON DARTMOUTH 9 YARD LINE
140
+ DOWN: 2 GOAL TO GO
141
+
142
+
143
+ SHORT PASS. INTERCEPTED.
144
+ TOUCHBACK
145
+ BALL ON DARTMOUTH 20 YARD LINE
146
+
147
+ FIRST DOWN DARTMOUTH***
148
+
149
+
150
+ NEXT PLAY? 4
151
+ LONG PASS. INTERCEPTED.
152
+ BALL ON DARTMOUTH 50 YARD LINE
153
+
154
+ FIRST DOWN FOOBAR***
155
+
156
+
157
+ SHORT PASS. COMPLETE. 15 YARD GAIN
158
+ BALL ON DARTMOUTH 35 YARD LINE
159
+
160
+ FIRST DOWN FOOBAR***
161
+
162
+
163
+ SIMPLE RUN. 3 YARD GAIN
164
+ BALL ON DARTMOUTH 32 YARD LINE
165
+ DOWN: 2 YARDS TO GO: 7
166
+
167
+
168
+ TRICKY RUN. 11 YARD GAIN
169
+ BALL ON DARTMOUTH 21 YARD LINE
170
+
171
+ FIRST DOWN FOOBAR***
172
+
173
+
174
+ SIMPLE RUN. 3 YARD GAIN
175
+ BALL ON DARTMOUTH 18 YARD LINE
176
+ DOWN: 2 YARDS TO GO: 7
177
+
178
+
179
+ LONG PASS. INCOMPLETE. NO GAIN
180
+ BALL ON DARTMOUTH 18 YARD LINE
181
+ DOWN: 3 YARDS TO GO: 7
182
+
183
+
184
+ TRICKY RUN. NO GAIN
185
+ BALL ON DARTMOUTH 18 YARD LINE
186
+ DOWN: 4 YARDS TO GO: 7
187
+
188
+
189
+ PLACE KICK. KICK IS BLOCKED ***
190
+ BALL ON DARTMOUTH 23 YARD LINE
191
+
192
+ FIRST DOWN DARTMOUTH***
193
+
194
+
195
+ NEXT PLAY? 5
196
+ PUNT. 44 YARD PUNT
197
+ BALL ON FOOBAR 33 YARD LINE
198
+
199
+ FIRST DOWN FOOBAR***
200
+
201
+
202
+ SIMPLE RUN. 3 YARD GAIN
203
+ BALL ON FOOBAR 36 YARD LINE
204
+ DOWN: 2 YARDS TO GO: 7
205
+
206
+
207
+ LONG PASS. INCOMPLETE. NO GAIN
208
+ BALL ON FOOBAR 36 YARD LINE
209
+ DOWN: 3 YARDS TO GO: 7
210
+
211
+
212
+ LONG PASS. INTERCEPTED.
213
+ BALL ON DARTMOUTH 23 YARD LINE
214
+
215
+ FIRST DOWN DARTMOUTH***
216
+
217
+
218
+ NEXT PLAY? 6
219
+ QUICK KICK . 45 YARD PUNT
220
+ BALL ON FOOBAR 32 YARD LINE
221
+
222
+ FIRST DOWN FOOBAR***
223
+
224
+
225
+ SHORT PASS. COMPLETE. 7 YARD GAIN
226
+ BALL ON FOOBAR 39 YARD LINE
227
+ DOWN: 2 YARDS TO GO: 3
228
+
229
+
230
+ SHORT PASS. COMPLETE. 11 YARD GAIN
231
+ BALL ON DARTMOUTH 50 YARD LINE
232
+
233
+ FIRST DOWN FOOBAR***
234
+
235
+
236
+ SIMPLE RUN. 1 YARD GAIN
237
+ BALL ON DARTMOUTH 49 YARD LINE
238
+ DOWN: 2 YARDS TO GO: 9
239
+
240
+
241
+ LONG PASS. COMPLETE. 37 YARD GAIN
242
+ DARTMOUTH OFFSIDES -- PENALTY OF 5 YARDS.
243
+
244
+
245
+ PENALTY REFUSED.
246
+ BALL ON DARTMOUTH 12 YARD LINE
247
+
248
+ FIRST DOWN FOOBAR***
249
+
250
+
251
+ SIMPLE RUN. 2 YARD GAIN
252
+ BALL ON DARTMOUTH 10 YARD LINE
253
+ DOWN: 2 YARDS TO GO: 8
254
+
255
+
256
+ TRICKY RUN. TOUCHDOWN ***
257
+ KICK IS OFF TO THE SIDE
258
+
259
+ SCORE: 0 TO 6
260
+
261
+
262
+ FOOBAR KICKS OFF
263
+ 56 YARD KICKOFF
264
+ 0 YARD RUNBACK
265
+ BALL ON DARTMOUTH 4 YARD LINE
266
+
267
+ FIRST DOWN DARTMOUTH***
268
+
269
+
270
+ NEXT PLAY? 7
271
+ PLACE KICK. BALL ON DARTMOUTH 4 YARD LINE
272
+
273
+ FIRST DOWN DARTMOUTH***
274
+
275
+
276
+ NEXT PLAY? 1
277
+ SIMPLE RUN. 2 YARD GAIN
278
+ BALL ON DARTMOUTH 6 YARD LINE
279
+ DOWN: 2 YARDS TO GO: 8
280
+
281
+
282
+ NEXT PLAY? 2
283
+ TRICKY RUN. 5 YARD GAIN
284
+ BALL ON DARTMOUTH 11 YARD LINE
285
+ DOWN: 3 YARDS TO GO: 3
286
+
287
+
288
+ NEXT PLAY? 3
289
+ SHORT PASS. BATTED DOWN. NO GAIN
290
+ BALL ON DARTMOUTH 11 YARD LINE
291
+ DOWN: 4 YARDS TO GO: 3
292
+
293
+
294
+ NEXT PLAY? 4
295
+ LONG PASS. COMPLETE. 32 YARD GAIN
296
+ BALL ON DARTMOUTH 43 YARD LINE
297
+
298
+ FIRST DOWN DARTMOUTH***
299
+
300
+
301
+ NEXT PLAY? 5
302
+ PUNT. 41 YARD PUNT
303
+ BALL ON FOOBAR 16 YARD LINE
304
+
305
+ FIRST DOWN FOOBAR***
306
+
307
+
308
+ SHORT PASS. INCOMPLETE. NO GAIN
309
+ BALL ON FOOBAR 16 YARD LINE
310
+ DOWN: 2 YARDS TO GO: 10
311
+
312
+
313
+ END OF GAME ***
314
+ FINAL SCORE: DARTMOUTH: 0 FOOBAR: 6
315
+ Break in line 930