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,52 @@
1
+ 10 PRINT TAB(30);"GUNNER"
2
+ 20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 30 PRINT:PRINT:PRINT
4
+ 130 PRINT "YOU ARE THE OFFICER-IN-CHARGE, GIVING ORDERS TO A GUN"
5
+ 140 PRINT "CREW, TELLING THEM THE DEGREES OF ELEVATION YOU ESTIMATE"
6
+ 150 PRINT "WILL PLACE A PROJECTILE ON TARGET. A HIT WITHIN 100 YARDS"
7
+ 160 PRINT "OF THE TARGET WILL DESTROY IT." : PRINT
8
+ 170 R=INT(40000*RND(1)+20000)
9
+ 180 PRINT "MAXIMUM RANGE OF YOUR GUN IS";R;" YARDS."
10
+ 185 Z=0
11
+ 190 PRINT
12
+ 195 S1=0
13
+ 200 T=INT(R*(.1+.8*RND(1)))
14
+ 210 S=0
15
+ 220 GOTO 370
16
+ 230 PRINT "MINIMUM ELEVATION IS ONE DEGREE."
17
+ 240 GOTO 390
18
+ 250 PRINT "MAXIMUM ELEVATION IS 89 DEGREES."
19
+ 260 GOTO 390
20
+ 270 PRINT "OVER TARGET BY ";ABS(E);"YARDS."
21
+ 280 GOTO 390
22
+ 290 PRINT "SHORT OF TARGET BY "ABS(E);"YARDS."
23
+ 300 GOTO 390
24
+ 320 PRINT "*** TARGET DESTROYED *** ";S;"ROUNDS OF AMMUNITION EXPENDED."
25
+ 325 S1=S1+S
26
+ 330 IF Z=4 THEN 490
27
+ 340 Z=Z+1
28
+ 345 PRINT
29
+ 350 PRINT "THE FORWARD OBSERVER HAS SIGHTED MORE ENEMY ACTIVITY..."
30
+ 360 GOTO 200
31
+ 370 PRINT "DISTANCE TO THE TARGET IS "T;" YARDS."
32
+ 380 PRINT
33
+ 390 PRINT
34
+ 400 INPUT "ELEVATION";B
35
+ 420 IF B>89 THEN 250
36
+ 430 IF B<1 THEN 230
37
+ 440 S=S+1
38
+ 442 IF S<6 THEN 450
39
+ 444 PRINT:PRINT "BOOM !!!! YOU HAVE JUST BEEN DESTROYED ";
40
+ 446 PRINT "BY THE ENEMY." : PRINT : PRINT : PRINT : GOTO 495
41
+ 450 B2=2*B/57.3 : I=R*SIN(B2) : X=T-I : E=INT(X)
42
+ 460 IF ABS(E)<100 THEN 320
43
+ 470 IF E>100 THEN 290
44
+ 480 GOTO 270
45
+ 490 PRINT : PRINT : PRINT "TOTAL ROUNDS EXPENDED WERE:";S1
46
+ 492 IF S1>18 THEN 495
47
+ 493 PRINT "NICE SHOOTING !!" : GOTO 500
48
+ 495 PRINT "BETTER GO BACK TO FORT SILL FOR REFRESHER TRAINING!"
49
+ 500 PRINT : INPUT "TRY AGAIN (Y OR N)";Z$
50
+ 510 IF Z$="Y" THEN 170
51
+ 520 PRINT:PRINT "OK. RETURN TO BASE CAMP."
52
+ 999 END
@@ -0,0 +1,18 @@
1
+ 45
2
+ 40
3
+ 30
4
+ 25
5
+ 20
6
+ 21
7
+ Y
8
+ 45
9
+ 20
10
+ 10
11
+ 17
12
+ 15
13
+ 16
14
+ Y
15
+ 30
16
+ 20
17
+ 17
18
+ 19
@@ -0,0 +1,91 @@
1
+ GUNNER
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+ YOU ARE THE OFFICER-IN-CHARGE, GIVING ORDERS TO A GUN
7
+ CREW, TELLING THEM THE DEGREES OF ELEVATION YOU ESTIMATE
8
+ WILL PLACE A PROJECTILE ON TARGET. A HIT WITHIN 100 YARDS
9
+ OF THE TARGET WILL DESTROY IT.
10
+
11
+ MAXIMUM RANGE OF YOUR GUN IS 41952 YARDS.
12
+
13
+ DISTANCE TO THE TARGET IS 28198 YARDS.
14
+
15
+
16
+ ELEVATION? 45
17
+ OVER TARGET BY 13754 YARDS.
18
+
19
+ ELEVATION? 40
20
+ OVER TARGET BY 13116 YARDS.
21
+
22
+ ELEVATION? 30
23
+ OVER TARGET BY 8132 YARDS.
24
+
25
+ ELEVATION? 25
26
+ OVER TARGET BY 3938 YARDS.
27
+
28
+ ELEVATION? 20
29
+ SHORT OF TARGET BY 1233 YARDS.
30
+
31
+ ELEVATION? 21
32
+
33
+ BOOM !!!! YOU HAVE JUST BEEN DESTROYED BY THE ENEMY.
34
+
35
+
36
+
37
+ BETTER GO BACK TO FORT SILL FOR REFRESHER TRAINING!
38
+
39
+ TRY AGAIN (Y OR N)? Y
40
+ MAXIMUM RANGE OF YOUR GUN IS 44110 YARDS.
41
+
42
+ DISTANCE TO THE TARGET IS 23638 YARDS.
43
+
44
+
45
+ ELEVATION? 45
46
+ OVER TARGET BY 20472 YARDS.
47
+
48
+ ELEVATION? 20
49
+ OVER TARGET BY 4714 YARDS.
50
+
51
+ ELEVATION? 10
52
+ SHORT OF TARGET BY 8552 YARDS.
53
+
54
+ ELEVATION? 17
55
+ OVER TARGET BY 1027 YARDS.
56
+
57
+ ELEVATION? 15
58
+ SHORT OF TARGET BY 1584 YARDS.
59
+
60
+ ELEVATION? 16
61
+
62
+ BOOM !!!! YOU HAVE JUST BEEN DESTROYED BY THE ENEMY.
63
+
64
+
65
+
66
+ BETTER GO BACK TO FORT SILL FOR REFRESHER TRAINING!
67
+
68
+ TRY AGAIN (Y OR N)? Y
69
+ MAXIMUM RANGE OF YOUR GUN IS 36946 YARDS.
70
+
71
+ DISTANCE TO THE TARGET IS 22785 YARDS.
72
+
73
+
74
+ ELEVATION? 30
75
+ OVER TARGET BY 9210 YARDS.
76
+
77
+ ELEVATION? 20
78
+ OVER TARGET BY 962 YARDS.
79
+
80
+ ELEVATION? 17
81
+ SHORT OF TARGET BY 2126 YARDS.
82
+
83
+ ELEVATION? 19
84
+ *** TARGET DESTROYED *** 4 ROUNDS OF AMMUNITION EXPENDED.
85
+
86
+ THE FORWARD OBSERVER HAS SIGHTED MORE ENEMY ACTIVITY...
87
+ DISTANCE TO THE TARGET IS 16628 YARDS.
88
+
89
+
90
+ ELEVATION?
91
+ Error on line 400: No more input
@@ -0,0 +1,119 @@
1
+ 10 PRINT TAB(32);"HAMURABI"
2
+ 20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 30 PRINT:PRINT:PRINT
4
+ 80 PRINT "TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA"
5
+ 90 PRINT "FOR A TEN-YEAR TERM OF OFFICE.":PRINT
6
+ 95 D1=0: P1=0
7
+ 100 Z=0: P=95:S=2800: H=3000: E=H-S
8
+ 110 Y=3: A=H/Y: I=5: Q=1
9
+ 210 D=0
10
+ 215 PRINT:PRINT:PRINT "HAMURABI: I BEG TO REPORT TO YOU,": Z=Z+1
11
+ 217 PRINT "IN YEAR";Z;",";D;"PEOPLE STARVED,";I;"CAME TO THE CITY,"
12
+ 218 P=P+I
13
+ 227 IF Q>0 THEN 230
14
+ 228 P=INT(P/2)
15
+ 229 PRINT "A HORRIBLE PLAGUE STRUCK! HALF THE PEOPLE DIED."
16
+ 230 PRINT "POPULATION IS NOW";P
17
+ 232 PRINT "THE CITY NOW OWNS ";A;"ACRES."
18
+ 235 PRINT "YOU HARVESTED";Y;"BUSHELS PER ACRE."
19
+ 250 PRINT "THE RATS ATE";E;"BUSHELS."
20
+ 260 PRINT "YOU NOW HAVE ";S;"BUSHELS IN STORE.": PRINT
21
+ 270 IF Z=11 THEN 860
22
+ 310 C=INT(10*RND(1)): Y=C+17
23
+ 312 PRINT "LAND IS TRADING AT";Y;"BUSHELS PER ACRE."
24
+ 320 PRINT "HOW MANY ACRES DO YOU WISH TO BUY";
25
+ 321 INPUT Q: IF Q<0 THEN 850
26
+ 322 IF Y*Q<=S THEN 330
27
+ 323 GOSUB 710
28
+ 324 GOTO 320
29
+ 330 IF Q=0 THEN 340
30
+ 331 A=A+Q: S=S-Y*Q: C=0
31
+ 334 GOTO 400
32
+ 340 PRINT "HOW MANY ACRES DO YOU WISH TO SELL";
33
+ 341 INPUT Q: IF Q<0 THEN 850
34
+ 342 IF Q<A THEN 350
35
+ 343 GOSUB 720
36
+ 344 GOTO 340
37
+ 350 A=A-Q: S=S+Y*Q: C=0
38
+ 400 PRINT
39
+ 410 PRINT "HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE";
40
+ 411 INPUT Q
41
+ 412 IF Q<0 THEN 850
42
+ 418 REM *** TRYING TO USE MORE GRAIN THAN IS IN SILOS?
43
+ 420 IF Q<=S THEN 430
44
+ 421 GOSUB 710
45
+ 422 GOTO 410
46
+ 430 S=S-Q: C=1: PRINT
47
+ 440 PRINT "HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED";
48
+ 441 INPUT D: IF D=0 THEN 511
49
+ 442 IF D<0 THEN 850
50
+ 444 REM *** TRYING TO PLANT MORE ACRES THAN YOU OWN?
51
+ 445 IF D<=A THEN 450
52
+ 446 GOSUB 720
53
+ 447 GOTO 440
54
+ 449 REM *** ENOUGH GRAIN FOR SEED?
55
+ 450 IF INT(D/2)<=S THEN 455
56
+ 452 GOSUB 710
57
+ 453 GOTO 440
58
+ 454 REM *** ENOUGH PEOPLE TO TEND THE CROPS?
59
+ 455 IF D<10*P THEN 510
60
+ 460 PRINT "BUT YOU HAVE ONLY";P;"PEOPLE TO TEND THE FIELDS! NOW THEN,"
61
+ 470 GOTO 440
62
+ 510 S=S-INT(D/2)
63
+ 511 GOSUB 800
64
+ 512 REM *** A BOUNTIFUL HARVEST!
65
+ 515 Y=C: H=D*Y: E=0
66
+ 521 GOSUB 800
67
+ 522 IF INT(C/2)<>C/2 THEN 530
68
+ 523 REM *** RATS ARE RUNNING WILD!!
69
+ 525 E=INT(S/C)
70
+ 530 S=S-E+H
71
+ 531 GOSUB 800
72
+ 532 REM *** LET'S HAVE SOME BABIES
73
+ 533 I=INT(C*(20*A+S)/P/100+1)
74
+ 539 REM *** HOW MANY PEOPLE HAD FULL TUMMIES?
75
+ 540 C=INT(Q/20)
76
+ 541 REM *** HORROS, A 15% CHANCE OF PLAGUE
77
+ 542 Q=INT(10*(2*RND(1)-.3))
78
+ 550 IF P<C THEN 210
79
+ 551 REM *** STARVE ENOUGH FOR IMPEACHMENT?
80
+ 552 D=P-C: IF D>.45*P THEN 560
81
+ 553 P1=((Z-1)*P1+D*100/P)/Z
82
+ 555 P=C: D1=D1+D: GOTO 215
83
+ 560 PRINT: PRINT "YOU STARVED";D;"PEOPLE IN ONE YEAR!!!"
84
+ 565 PRINT "DUE TO THIS EXTREME MISMANAGEMENT YOU HAVE NOT ONLY"
85
+ 566 PRINT "BEEN IMPEACHED AND THROWN OUT OF OFFICE BUT YOU HAVE"
86
+ 567 PRINT "ALSO BEEN DECLARED NATIONAL FINK!!!!": GOTO 990
87
+ 710 PRINT "HAMURABI: THINK AGAIN. YOU HAVE ONLY"
88
+ 711 PRINT S;"BUSHELS OF GRAIN. NOW THEN,"
89
+ 712 RETURN
90
+ 720 PRINT "HAMURABI: THINK AGAIN. YOU OWN ONLY";A;"ACRES. NOW THEN,"
91
+ 730 RETURN
92
+ 800 C=INT(RND(1)*5)+1
93
+ 801 RETURN
94
+ 850 PRINT: PRINT "HAMURABI: I CANNOT DO WHAT YOU WISH."
95
+ 855 PRINT "GET YOURSELF ANOTHER STEWARD!!!!!"
96
+ 857 GOTO 990
97
+ 860 PRINT "IN YOUR 10-YEAR TERM OF OFFICE,";P1;"PERCENT OF THE"
98
+ 862 PRINT "POPULATION STARVED PER YEAR ON THE AVERAGE, I.E. A TOTAL OF"
99
+ 865 PRINT D1;"PEOPLE DIED!!": L=A/P
100
+ 870 PRINT "YOU STARTED WITH 10 ACRES PER PERSON AND ENDED WITH"
101
+ 875 PRINT L;"ACRES PER PERSON.": PRINT
102
+ 880 IF P1>33 THEN 565
103
+ 885 IF L<7 THEN 565
104
+ 890 IF P1>10 THEN 940
105
+ 892 IF L<9 THEN 940
106
+ 895 IF P1>3 THEN 960
107
+ 896 IF L<10 THEN 960
108
+ 900 PRINT "A FANTASTIC PERFORMANCE!!! CHARLEMANGE, DISRAELI, AND"
109
+ 905 PRINT "JEFFERSON COMBINED COULD NOT HAVE DONE BETTER!":GOTO 990
110
+ 940 PRINT "YOUR HEAVY-HANDED PERFORMANCE SMACKS OF NERO AND IVAN IV."
111
+ 945 PRINT "THE PEOPLE (REMIANING) FIND YOU AN UNPLEASANT RULER, AND,"
112
+ 950 PRINT "FRANKLY, HATE YOUR GUTS!!":GOTO 990
113
+ 960 PRINT "YOUR PERFORMANCE COULD HAVE BEEN SOMEWHAT BETTER, BUT"
114
+ 965 PRINT "REALLY WASN'T TOO BAD AT ALL. ";INT(P*.8*RND(1));"PEOPLE"
115
+ 970 PRINT "WOULD DEARLY LIKE TO SEE YOU ASSASSINATED BUT WE ALL HAVE OUR"
116
+ 975 PRINT "TRIVIAL PROBLEMS."
117
+ 990 PRINT: FOR N=1 TO 10: PRINT CHR$(7);: NEXT N
118
+ 995 PRINT "SO LONG FOR NOW.": PRINT
119
+ 999 END
@@ -0,0 +1,7 @@
1
+ 20
2
+ 2000
3
+ 500
4
+ 20
5
+ 1900
6
+ 600
7
+ 600
@@ -0,0 +1,51 @@
1
+ HAMURABI
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+ TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA
7
+ FOR A TEN-YEAR TERM OF OFFICE.
8
+
9
+
10
+
11
+ HAMURABI: I BEG TO REPORT TO YOU,
12
+ IN YEAR 1 , 0 PEOPLE STARVED, 5 CAME TO THE CITY,
13
+ POPULATION IS NOW 100
14
+ THE CITY NOW OWNS 1000 ACRES.
15
+ YOU HARVESTED 3 BUSHELS PER ACRE.
16
+ THE RATS ATE 200 BUSHELS.
17
+ YOU NOW HAVE 2800 BUSHELS IN STORE.
18
+
19
+ LAND IS TRADING AT 22 BUSHELS PER ACRE.
20
+ HOW MANY ACRES DO YOU WISH TO BUY? 20
21
+
22
+ HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 2000
23
+
24
+ HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 500
25
+
26
+
27
+ HAMURABI: I BEG TO REPORT TO YOU,
28
+ IN YEAR 2 , 0 PEOPLE STARVED, 7 CAME TO THE CITY,
29
+ POPULATION IS NOW 107
30
+ THE CITY NOW OWNS 1020 ACRES.
31
+ YOU HARVESTED 4 BUSHELS PER ACRE.
32
+ THE RATS ATE 27 BUSHELS.
33
+ YOU NOW HAVE 2083 BUSHELS IN STORE.
34
+
35
+ LAND IS TRADING AT 23 BUSHELS PER ACRE.
36
+ HOW MANY ACRES DO YOU WISH TO BUY? 20
37
+
38
+ HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 1900
39
+ HAMURABI: THINK AGAIN. YOU HAVE ONLY
40
+ 1623 BUSHELS OF GRAIN. NOW THEN,
41
+ HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 600
42
+
43
+ HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 600
44
+
45
+ YOU STARVED 77 PEOPLE IN ONE YEAR!!!
46
+ DUE TO THIS EXTREME MISMANAGEMENT YOU HAVE NOT ONLY
47
+ BEEN IMPEACHED AND THROWN OUT OF OFFICE BUT YOU HAVE
48
+ ALSO BEEN DECLARED NATIONAL FINK!!!!
49
+
50
+ SO LONG FOR NOW.
51
+
@@ -0,0 +1,81 @@
1
+ 10 PRINT TAB(32);"HANGMAN"
2
+ 20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 25 PRINT:PRINT:PRINT
4
+ 30 DIM P$(12,12),L$(20),D$(20),N$(26),U(50)
5
+ 40 C=1: N=50
6
+ 50 FOR I=1 TO 20: D$(I)="-": NEXT I: M=0
7
+ 60 FOR I=1 TO 26: N$(I)="": NEXT I
8
+ 70 FOR I=1 TO 12: FOR J=1 TO 12: P$(I,J)=" ": NEXT J: NEXT I
9
+ 80 FOR I=1 TO 12: P$(I,1)="X": NEXT I
10
+ 90 FOR I=1 TO 7: P$(1,I)="X": NEXT: P$(2,7)="X"
11
+ 95 IF C<N THEN 100
12
+ 97 PRINT "YOU DID ALL THE WORDS!!": STOP
13
+ 100 Q=INT(N*RND(1))+1
14
+ 110 IF U(Q)=1 THEN 100
15
+ 115 U(Q)=1: C=C+1: RESTORE: T1=0
16
+ 150 FOR I=1 TO Q: READ A$: NEXT I
17
+ 160 L=LEN(A$): FOR I=1 TO LEN(A$): L$(I)=MID$(A$,I,1): NEXT I
18
+ 170 PRINT "HERE ARE THE LETTERS YOU USED:"
19
+ 180 FOR I=1 TO 26: PRINT N$(I);: IF N$(I+1)="" THEN 200
20
+ 190 PRINT ",";: NEXT I
21
+ 200 PRINT: PRINT: FOR I=1 TO L: PRINT D$(I);: NEXT I: PRINT: PRINT
22
+ 210 INPUT "WHAT IS YOUR GUESS";G$: R=0
23
+ 220 FOR I=1 TO 26: IF N$(I)="" THEN 250
24
+ 230 IF G$=N$(I) THEN PRINT "YOU GUESSED THAT LETTER BEFORE!": GOTO 170
25
+ 240 NEXT I: PRINT "PROGRAM ERROR. RUN AGAIN.": STOP
26
+ 250 N$(I)=G$: T1=T1+1
27
+ 260 FOR I=1 TO L: IF L$(I)=G$ THEN 280
28
+ 270 NEXT I: IF R=0 THEN 290
29
+ 275 GOTO 300
30
+ 280 D$(I)=G$: R=R+1: GOTO 270
31
+ 290 M=M+1: GOTO 400
32
+ 300 FOR I=1 TO L: IF D$(I)="-" THEN 320
33
+ 310 NEXT I: GOTO 390
34
+ 320 PRINT: FOR I=1 TO L: PRINT D$(I);: NEXT I: PRINT: PRINT
35
+ 330 INPUT "WHAT IS YOUR GUESS FOR THE WORD";B$
36
+ 340 IF A$=B$ THEN 360
37
+ 350 PRINT "WRONG. TRY ANOTHER LETTER.": PRINT: GOTO 170
38
+ 360 PRINT "RIGHT!! IT TOOK YOU";T1;"GUESSES!"
39
+ 370 INPUT "WANT ANOTHER WORD";W$: IF W$="YES" THEN 50
40
+ 380 PRINT: PRINT "IT'S BEEN FUN! BYE FOR NOW.": GOTO 999
41
+ 390 PRINT "YOU FOUND THE WORD!": GOTO 370
42
+ 400 PRINT: PRINT: PRINT"SORRY, THAT LETTER ISN'T IN THE WORD."
43
+ 410 ON M GOTO 415,420,425,430,435,440,445,450,455,460
44
+ 415 PRINT "FIRST, WE DRAW A HEAD": GOTO 470
45
+ 420 PRINT "NOW WE DRAW A BODY.": GOTO 470
46
+ 425 PRINT "NEXT WE DRAW AN ARM.": GOTO 470
47
+ 430 PRINT "THIS TIME IT'S THE OTHER ARM.": GOTO 470
48
+ 435 PRINT "NOW, LET'S DRAW THE RIGHT LEG.": GOTO 470
49
+ 440 PRINT "THIS TIME WE DRAW THE LEFT LEG.": GOTO 470
50
+ 445 PRINT "NOW WE PUT UP A HAND.": GOTO 470
51
+ 450 PRINT "NEXT THE OTHER HAND.": GOTO 470
52
+ 455 PRINT "NOW WE DRAW ONE FOOT": GOTO 470
53
+ 460 PRINT "HERE'S THE OTHER FOOT -- YOU'RE HUNG!!"
54
+ 470 ON M GOTO 480,490,500,510,520,530,540,550,560,570
55
+ 480 P$(3,6)="-": P$(3,7)="-": P$(3,8)="-": P$(4,5)="(": P$(4,6)="."
56
+ 481 P$(4,8)=".":P$(4,9)=")":P$(5,6)="-":P$(5,7)="-":P$(5,8)="-":GOTO 580
57
+ 490 FOR I=6 TO 9: P$(I,7)="X": NEXT I: GOTO 580
58
+ 500 FOR I=4 TO 7: P$(I,I-1)="\": NEXT I: GOTO 580
59
+ 510 P$(4,11)="/": P$(5,10)="/": P$(6,9)="/": P$(7,8)="/": GOTO 580
60
+ 520 P$(10,6)="/": P$(11,5)="/": GOTO 580
61
+ 530 P$(10,8)="\": P$(11,9)="\": GOTO 580
62
+ 540 P$(3,11)="\": GOTO 580
63
+ 550 P$(3,3)="/": GOTO 580
64
+ 560 P$(12,10)="\": P$(12,11)="-": GOTO 580
65
+ 570 P$(12,3)="-": P$(12,4)="/"
66
+ 580 FOR I=1 TO 12: FOR J=1 TO 12: PRINT P$(I,J);: NEXT J
67
+ 590 PRINT: NEXT I: PRINT: PRINT: IF M<>10 THEN 170
68
+ 600 PRINT "SORRY, YOU LOSE. THE WORD WAS ";A$
69
+ 610 PRINT "YOU MISSED THAT ONE. DO YOU ";: GOTO 370
70
+ 620 INPUT "TYPE YES OR NO";Y$: IF LEFT$(Y$,1)="Y" THEN 50
71
+ 700 DATA "GUM","SIN","FOR","CRY","LUG","BYE","FLY"
72
+ 710 DATA "UGLY","EACH","FROM","WORK","TALK","WITH","SELF"
73
+ 720 DATA "PIZZA","THING","FEIGN","FIEND","ELBOW","FAULT","DIRTY"
74
+ 730 DATA "BUDGET","SPIRIT","QUAINT","MAIDEN","ESCORT","PICKAX"
75
+ 740 DATA "EXAMPLE","TENSION","QUININE","KIDNEY","REPLICA","SLEEPER"
76
+ 750 DATA "TRIANGLE","KANGAROO","MAHOGANY","SERGEANT","SEQUENCE"
77
+ 760 DATA "MOUSTACHE","DANGEROUS","SCIENTIST","DIFFERENT","QUIESCENT"
78
+ 770 DATA "MAGISTRATE","ERRONEOUSLY","LOUDSPEAKER","PHYTOTOXIC"
79
+ 780 DATA "MATRIMONIAL","PARASYMPATHOMIMETIC","THIGMOTROPISM"
80
+ 990 PRINT "BYE NOW"
81
+ 999 END
@@ -0,0 +1,69 @@
1
+ E
2
+ T
3
+ A
4
+ N
5
+ R
6
+ S
7
+ H
8
+ M
9
+ O
10
+ X
11
+ B
12
+ P
13
+ L
14
+ L
15
+ YES
16
+ E
17
+ T
18
+ A
19
+ O
20
+ N
21
+ G
22
+ S
23
+ R
24
+ K
25
+ B
26
+ L
27
+ M
28
+ H
29
+ I
30
+ O
31
+ Y
32
+ J
33
+ G
34
+ MAHOGANY
35
+ YES
36
+ T
37
+ A
38
+ E
39
+ O
40
+ I
41
+ S
42
+ H
43
+ N
44
+ R
45
+ D
46
+ B
47
+ G
48
+ X
49
+ Y
50
+ K
51
+ K
52
+ YES
53
+ A
54
+ B
55
+ C
56
+ D
57
+ E
58
+ F
59
+ G
60
+ H
61
+ I
62
+ J
63
+ K
64
+ L
65
+ M
66
+ N
67
+ O
68
+ P
69
+ NO