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,135 @@
1
+ module Integration
2
+
3
+ class Test
4
+
5
+ BASIC_EXTENSION = '.bas'
6
+
7
+ def initialize(basic_path)
8
+ @basic_path = basic_path
9
+ create_input
10
+ create_expected_output
11
+ @expected_output = read_expected_output
12
+ end
13
+
14
+ def matches_patterns?(patterns)
15
+ return true if patterns.empty?
16
+ path = Pathname.new(@basic_path)
17
+ path = path.relative_path_from(base_path)
18
+ path.to_s =~ Regexp.union(patterns)
19
+ end
20
+
21
+ def run
22
+ output_file = OutputFile.new
23
+ output_file.max_lines = options['max_output_lines']
24
+ File.open(input_path, 'r') do |input_file|
25
+ begin
26
+ program = Basic101::Program.load_file(@basic_path)
27
+ runtime = Basic101::Runtime.new(:input_file => input_file,
28
+ :output_file => output_file,
29
+ :program => program)
30
+ runtime.run
31
+ rescue Error => e
32
+ output_file.puts_unchecked e
33
+ rescue Parslet::ParseFailed => e
34
+ output_file.puts e
35
+ rescue Basic101::Error => e
36
+ output_file.puts e
37
+ rescue Exception => e
38
+ output_file.puts e, e.backtrace
39
+ end
40
+ end
41
+ @output = output_file.string
42
+ end
43
+
44
+ def print_progress
45
+ print progress_character
46
+ end
47
+
48
+ def print_failure
49
+ return if passed?
50
+ puts
51
+ puts "Failed: #{File.basename(@basic_path)}"
52
+ actual_output_file = Tempfile.new(expected_output_filename)
53
+ actual_output_file.write @output
54
+ actual_output_file.close
55
+ command = [
56
+ 'diff',
57
+ '-u',
58
+ expected_output_path,
59
+ actual_output_file.path,
60
+ ].join(' ')
61
+ system(command)
62
+ actual_output_file.unlink
63
+ end
64
+
65
+ def train
66
+ File.open(expected_output_path, 'w') do |file|
67
+ file.write @output
68
+ end
69
+ end
70
+
71
+ def passed?
72
+ @output == @expected_output
73
+ end
74
+
75
+ private
76
+
77
+ DEFAULT_OPTIONS = {
78
+ 'max_output_lines' => 10_000
79
+ }
80
+
81
+ def base_path
82
+ Pathname.new(__dir__) + 'tests'
83
+ end
84
+
85
+ def progress_character
86
+ if passed?
87
+ '.'
88
+ else
89
+ 'F'
90
+ end
91
+ end
92
+
93
+ def create_input
94
+ FileUtils.touch(input_path)
95
+ end
96
+
97
+ def create_expected_output
98
+ FileUtils.touch(expected_output_path)
99
+ end
100
+
101
+ def read_expected_output
102
+ File.read(expected_output_path)
103
+ end
104
+
105
+ def expected_output_filename
106
+ File.basename(expected_output_path)
107
+ end
108
+
109
+ def input_path
110
+ path_without_extension + '.input'
111
+ end
112
+
113
+ def expected_output_path
114
+ path_without_extension + '.output'
115
+ end
116
+
117
+ def options_path
118
+ path_without_extension + '.options'
119
+ end
120
+
121
+ def options
122
+ if File.exists?(options_path)
123
+ YAML.load_file(options_path)
124
+ else
125
+ DEFAULT_OPTIONS
126
+ end
127
+ end
128
+
129
+ def path_without_extension
130
+ @basic_path.chomp('.bas')
131
+ end
132
+
133
+ end
134
+
135
+ end
@@ -0,0 +1,64 @@
1
+ 20 PRINT TAB(31);"23 MATCHES"
2
+ 30 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 40 PRINT:PRINT:PRINT
4
+ 80 PRINT " THIS IS A GAME CALLED '23 MATCHES'."
5
+ 90 PRINT
6
+ 100 PRINT "WHEN IT IS YOUR TURN, YOU MAY TAKE ONE, TWO, OR THREE"
7
+ 110 PRINT "MATCHES. THE OBJECT OF THE GAME IS NOT TO HAVE TO TAKE"
8
+ 120 PRINT "THE LAST MATCH."
9
+ 130 PRINT
10
+ 140 PRINT "LET'S FLIP A COIN TO SEE WHO GOES FIRST."
11
+ 150 PRINT "IF IT COMES UP HEADS, I WILL WIN THE TOSS."
12
+ 155 PRINT
13
+ 160 REM
14
+ 165 N = 23
15
+ 170 Q = INT(2*RND(5))
16
+ 180 IF Q = 1 THEN 210
17
+ 190 PRINT "TAILS! YOU GO FIRST. "
18
+ 195 PRINT
19
+ 200 GOTO 300
20
+ 210 PRINT "HEADS! I WIN! HA! HA!"
21
+ 220 PRINT "PREPARE TO LOSE, MEATBALL-NOSE!!"
22
+ 230 PRINT
23
+ 250 PRINT "I TAKE 2 MATCHES"
24
+ 260 N = N -2
25
+ 270 PRINT "THE NUMBER OF MATCHES IS NOW" N
26
+ 280 PRINT
27
+ 290 PRINT "YOUR TURN -- YOU MAY TAKE 1, 2 OR 3 MATCHES."
28
+ 300 PRINT "HOW MANY DO YOU WISH TO REMOVE",
29
+ 310 INPUT K
30
+ 320 IF K > 3 THEN 430
31
+ 330 IF K <= 0 THEN 430
32
+ 340 N = N - K
33
+ 350 PRINT "THERE ARE NOW";N;"MATCHES REMAINING."
34
+ 351 IF N = 4 THEN 381
35
+ 352 IF N = 3 THEN 383
36
+ 353 IF N = 2 THEN 385
37
+ 360 IF N <= 1 THEN 530
38
+ 370 Z = 4 - K
39
+ 372 GOTO 390
40
+ 380 PRINT
41
+ 381 Z = 3
42
+ 382 GOTO 390
43
+ 383 Z = 2
44
+ 384 GOTO 390
45
+ 385 Z = 1
46
+ 390 PRINT "MY TURN ! I REMOVE" Z "MATCHES"
47
+ 400 N = N - Z
48
+ 410 IF N <= 1 THEN 470
49
+ 420 GOTO 270
50
+ 430 PRINT "VERY FUNNY! DUMMY!"
51
+ 440 PRINT "DO YOU WANT TO PLAY OR GOOF AROUND?"
52
+ 450 PRINT "NOW, HOW MANY MATCHES DO YOU WANT",
53
+ 460 GOTO 310
54
+ 470 PRINT
55
+ 480 PRINT"YOU POOR BOOB! YOU TOOK THE LAST MATCH! I GOTCHA!!"
56
+ 490 PRINT "HA ! HA ! I BEAT YOU !!!"
57
+ 500 PRINT
58
+ 510 PRINT "GOOD BYE LOSER!"
59
+ 520 GOTO 560
60
+ 530 PRINT "YOU WON, FLOPPY EARS !"
61
+ 540 PRINT "THINK YOU'RE PRETTY SMART !"
62
+ 550 PRINT "LETS PLAY AGAIN AND I'LL BLOW YOUR SHOES OFF !!"
63
+ 560 STOP
64
+ 570 END
@@ -0,0 +1,29 @@
1
+ 23 MATCHES
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+ THIS IS A GAME CALLED '23 MATCHES'.
7
+
8
+ WHEN IT IS YOUR TURN, YOU MAY TAKE ONE, TWO, OR THREE
9
+ MATCHES. THE OBJECT OF THE GAME IS NOT TO HAVE TO TAKE
10
+ THE LAST MATCH.
11
+
12
+ LET'S FLIP A COIN TO SEE WHO GOES FIRST.
13
+ IF IT COMES UP HEADS, I WILL WIN THE TOSS.
14
+
15
+ HEADS! I WIN! HA! HA!
16
+ PREPARE TO LOSE, MEATBALL-NOSE!!
17
+
18
+ I TAKE 2 MATCHES
19
+ THE NUMBER OF MATCHES IS NOW 21
20
+
21
+ YOUR TURN -- YOU MAY TAKE 1, 2 OR 3 MATCHES.
22
+ HOW MANY DO YOU WISH TO REMOVE ? 3
23
+ THERE ARE NOW 18 MATCHES REMAINING.
24
+ MY TURN ! I REMOVE 1 MATCHES
25
+ THE NUMBER OF MATCHES IS NOW 17
26
+
27
+ YOUR TURN -- YOU MAY TAKE 1, 2 OR 3 MATCHES.
28
+ HOW MANY DO YOU WISH TO REMOVE ?
29
+ Error on line 310: No more input
@@ -0,0 +1,17 @@
1
+ 1 PRINT TAB(30);"SLOTS"
2
+ 2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 3 PRINT: PRINT: PRINT
4
+ 5 DEF FNA(Z)=30*EXP(-Z*Z/100)
5
+ 100 PRINT
6
+ 110 FOR X=-30 TO 30 STEP 1.5
7
+ 120 L=0
8
+ 130 Y1=5*INT(SQR(900-X*X)/5)
9
+ 140 FOR Y=Y1 TO -Y1 STEP -5
10
+ 150 Z=INT(25+FNA(SQR(X*X+Y*Y))-.7*Y)
11
+ 160 IF Z<=L THEN 190
12
+ 170 L=Z
13
+ 180 PRINT TAB(Z);"*";
14
+ 190 NEXT Y
15
+ 200 PRINT
16
+ 210 NEXT X
17
+ 300 END
@@ -0,0 +1,47 @@
1
+ SLOTS
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+
7
+ *
8
+ * * *
9
+ * * * * *
10
+ * * * * * * *
11
+ * * * * * * *
12
+ * * * * * * *
13
+ * * * * * * * * *
14
+ * * * * * * * * *
15
+ * * * * * * * * *
16
+ * * * * * * * * * * *
17
+ * * * * * * * * * * *
18
+ * * * * * * ** * * *
19
+ * * * * * * * * * *
20
+ * * * * * * * * *
21
+ * * * * * ** *
22
+ * * * * * *
23
+ * * * * * *
24
+ * * * * * *
25
+ * * * * * *
26
+ * * * * * *
27
+ * * * * * * *
28
+ * * * * * *
29
+ * * * * * *
30
+ * * * * * *
31
+ * * * * * *
32
+ * * * * * *
33
+ * * * * * ** *
34
+ * * * * * * * * *
35
+ * * * * * * * * * *
36
+ * * * * * * ** * * *
37
+ * * * * * * * * * * *
38
+ * * * * * * * * * * *
39
+ * * * * * * * * *
40
+ * * * * * * * * *
41
+ * * * * * * * * *
42
+ * * * * * * *
43
+ * * * * * * *
44
+ * * * * * * *
45
+ * * * * *
46
+ * * *
47
+ *
@@ -0,0 +1,100 @@
1
+ 10 PRINT TAB(26);"ACEY DUCEY CARD GAME"
2
+ 20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 21 PRINT
4
+ 22 PRINT
5
+ 30 PRINT"ACEY-DUCEY IS PLAYED IN THE FOLLOWING MANNER "
6
+ 40 PRINT"THE DEALER (COMPUTER) DEALS TWO CARDS FACE UP"
7
+ 50 PRINT"YOU HAVE AN OPTION TO BET OR NOT BET DEPENDING"
8
+ 60 PRINT"ON WHETHER OR NOT YOU FEEL THE CARD WILL HAVE"
9
+ 70 PRINT"A VALUE BETWEEN THE FIRST TWO."
10
+ 80 PRINT"IF YOU DO NOT WANT TO BET, INPUT A 0"
11
+ 100 N=100
12
+ 110 Q=100
13
+ 120 PRINT "YOU NOW HAVE";Q;"DOLLARS."
14
+ 130 PRINT
15
+ 140 GOTO 260
16
+ 210 Q=Q+M
17
+ 220 GOTO 120
18
+ 240 Q=Q-M
19
+ 250 GOTO 120
20
+ 260 PRINT"HERE ARE YOUR NEXT TWO CARDS: "
21
+ 270 A=INT(14*RND(1))+2
22
+ 280 IF A<2 THEN 270
23
+ 290 IF A>14 THEN 270
24
+ 300 B=INT(14*RND(1))+2
25
+ 310 IF B<2 THEN 300
26
+ 320 IF B>14 THEN 300
27
+ 330 IF A>=B THEN 270
28
+ 350 IF A<11 THEN 400
29
+ 360 IF A=11 THEN 420
30
+ 370 IF A=12 THEN 440
31
+ 380 IF A=13 THEN 460
32
+ 390 IF A=14 THEN 480
33
+ 400 PRINT A
34
+ 410 GOTO 500
35
+ 420 PRINT"JACK"
36
+ 430 GOTO 500
37
+ 440 PRINT"QUEEN"
38
+ 450 GOTO 500
39
+ 460 PRINT"KING"
40
+ 470 GOTO 500
41
+ 480 PRINT"ACE"
42
+ 500 IF B<11 THEN 550
43
+ 510 IF B=11 THEN 570
44
+ 520 IF B=12 THEN 590
45
+ 530 IF B=13 THEN 610
46
+ 540 IF B=14 THEN 630
47
+ 550 PRINT B
48
+ 560 GOTO 650
49
+ 570 PRINT"JACK"
50
+ 580 GOTO 650
51
+ 590 PRINT"QUEEN"
52
+ 600 GOTO 650
53
+ 610 PRINT"KING"
54
+ 620 GOTO 650
55
+ 630 PRINT"ACE"
56
+ 640 PRINT
57
+ 650 PRINT
58
+ 660 INPUT"WHAT IS YOUR BET";M
59
+ 670 IF M<>0 THEN 680
60
+ 675 PRINT"CHICKEN!!"
61
+ 676 PRINT
62
+ 677 GOTO 260
63
+ 680 IF M<=Q THEN 730
64
+ 690 PRINT"SORRY, MY FRIEND, BUT YOU BET TOO MUCH."
65
+ 700 PRINT"YOU HAVE ONLY ";Q;" DOLLARS TO BET."
66
+ 710 GOTO 650
67
+ 730 C=INT(14*RND(1))+2
68
+ 740 IF C<2 THEN 730
69
+ 750 IF C>14 THEN 730
70
+ 760 IF C<11 THEN 810
71
+ 770 IF C=11 THEN 830
72
+ 780 IF C=12 THEN 850
73
+ 790 IF C=13 THEN 870
74
+ 800 IF C=14 THEN 890
75
+ 810 PRINT C
76
+ 820 GOTO 910
77
+ 830 PRINT"JACK"
78
+ 840 GOTO 910
79
+ 850 PRINT"QUEEN"
80
+ 860 GOTO 910
81
+ 870 PRINT"KING"
82
+ 880 GOTO 910
83
+ 890 PRINT "ACE"
84
+ 900 PRINT
85
+ 910 IF C>A THEN 930
86
+ 920 GOTO 970
87
+ 930 IF C>=B THEN 970
88
+ 950 PRINT"YOU WIN!!!"
89
+ 960 GOTO 210
90
+ 970 PRINT"SORRY, YOU LOSE"
91
+ 980 IF M<Q THEN 240
92
+ 990 PRINT
93
+ 1000 PRINT
94
+ 1010 PRINT"SORRY, FRIEND, BUT YOU BLEW YOUR WAD."
95
+ 1015 PRINT:PRINT
96
+ 1020 INPUT"TRY AGAIN (YES OR NO)";A$
97
+ 1025 PRINT:PRINT
98
+ 1030 IF A$="YES" THEN 110
99
+ 1040 PRINT"O.K., HOPE YOU HAD FUN!"
100
+ 1050 END
@@ -0,0 +1,8 @@
1
+ 10
2
+ 20
3
+ 30
4
+ 40
5
+ 50
6
+ 60
7
+ 50
8
+ NO
@@ -0,0 +1,78 @@
1
+ ACEY DUCEY CARD GAME
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+ ACEY-DUCEY IS PLAYED IN THE FOLLOWING MANNER
6
+ THE DEALER (COMPUTER) DEALS TWO CARDS FACE UP
7
+ YOU HAVE AN OPTION TO BET OR NOT BET DEPENDING
8
+ ON WHETHER OR NOT YOU FEEL THE CARD WILL HAVE
9
+ A VALUE BETWEEN THE FIRST TWO.
10
+ IF YOU DO NOT WANT TO BET, INPUT A 0
11
+ YOU NOW HAVE 100 DOLLARS.
12
+
13
+ HERE ARE YOUR NEXT TWO CARDS:
14
+ 9
15
+ QUEEN
16
+
17
+ WHAT IS YOUR BET? 10
18
+ 10
19
+ YOU WIN!!!
20
+ YOU NOW HAVE 110 DOLLARS.
21
+
22
+ HERE ARE YOUR NEXT TWO CARDS:
23
+ 9
24
+ ACE
25
+
26
+
27
+ WHAT IS YOUR BET? 20
28
+ 2
29
+ SORRY, YOU LOSE
30
+ YOU NOW HAVE 90 DOLLARS.
31
+
32
+ HERE ARE YOUR NEXT TWO CARDS:
33
+ 8
34
+ QUEEN
35
+
36
+ WHAT IS YOUR BET? 30
37
+ 3
38
+ SORRY, YOU LOSE
39
+ YOU NOW HAVE 60 DOLLARS.
40
+
41
+ HERE ARE YOUR NEXT TWO CARDS:
42
+ 5
43
+ QUEEN
44
+
45
+ WHAT IS YOUR BET? 40
46
+ 8
47
+ YOU WIN!!!
48
+ YOU NOW HAVE 100 DOLLARS.
49
+
50
+ HERE ARE YOUR NEXT TWO CARDS:
51
+ 10
52
+ JACK
53
+
54
+ WHAT IS YOUR BET? 50
55
+ 7
56
+ SORRY, YOU LOSE
57
+ YOU NOW HAVE 50 DOLLARS.
58
+
59
+ HERE ARE YOUR NEXT TWO CARDS:
60
+ 8
61
+ JACK
62
+
63
+ WHAT IS YOUR BET? 60
64
+ SORRY, MY FRIEND, BUT YOU BET TOO MUCH.
65
+ YOU HAVE ONLY 50 DOLLARS TO BET.
66
+
67
+ WHAT IS YOUR BET? 50
68
+ 2
69
+ SORRY, YOU LOSE
70
+
71
+
72
+ SORRY, FRIEND, BUT YOU BLEW YOUR WAD.
73
+
74
+
75
+ TRY AGAIN (YES OR NO)? NO
76
+
77
+
78
+ O.K., HOPE YOU HAD FUN!
@@ -0,0 +1,138 @@
1
+ 10 PRINT TAB(28);"AMAZING PROGRAM"
2
+ 20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 30 PRINT:PRINT:PRINT:PRINT
4
+ 100 INPUT "WHAT ARE YOUR WIDTH AND LENGTH";H,V
5
+ 102 IF H<>1 AND V<>1 THEN 110
6
+ 104 PRINT "MEANINGLESS DIMENSIONS. TRY AGAIN.":GOTO 100
7
+ 110 DIM W(H,V),V(H,V)
8
+ 120 PRINT
9
+ 130 PRINT
10
+ 140 PRINT
11
+ 150 PRINT
12
+ 160 Q=0:Z=0:X=INT(RND(1)*H+1)
13
+ 165 FOR I=1 TO H
14
+ 170 IF I=X THEN 173
15
+ 171 PRINT ".--";:GOTO 180
16
+ 173 PRINT ". ";
17
+ 180 NEXT I
18
+ 190 PRINT "."
19
+ 195 C=1:W(X,1)=C:C=C+1
20
+ 200 R=X:S=1:GOTO 260
21
+ 210 IF R<>H THEN 240
22
+ 215 IF S<>V THEN 230
23
+ 220 R=1:S=1:GOTO 250
24
+ 230 R=1:S=S+1:GOTO 250
25
+ 240 R=R+1
26
+ 250 IF W(R,S)=0 THEN 210
27
+ 260 IF R-1=0 THEN 530
28
+ 265 IF W(R-1,S)<>0 THEN 530
29
+ 270 IF S-1=0 THEN 390
30
+ 280 IF W(R,S-1)<>0 THEN 390
31
+ 290 IF R=H THEN 330
32
+ 300 IF W(R+1,S)<>0 THEN 330
33
+ 310 X=INT(RND(1)*3+1)
34
+ 320 ON X GOTO 790,820,860
35
+ 330 IF S<>V THEN 340
36
+ 334 IF Z=1 THEN 370
37
+ 338 Q=1:GOTO 350
38
+ 340 IF W(R,S+1)<>0 THEN 370
39
+ 350 X=INT(RND(1)*3+1)
40
+ 360 ON X GOTO 790,820,910
41
+ 370 X=INT(RND(1)*2+1)
42
+ 380 ON X GOTO 790,820
43
+ 390 IF R=H THEN 470
44
+ 400 IF W(R+1,S)<>0 THEN 470
45
+ 405 IF S<>V THEN 420
46
+ 410 IF Z=1 THEN 450
47
+ 415 Q=1:GOTO 430
48
+ 420 IF W(R,S+1)<>0 THEN 450
49
+ 430 X=INT(RND(1)*3+1)
50
+ 440 ON X GOTO 790,860,910
51
+ 450 X=INT(RND(1)*2+1)
52
+ 460 ON X GOTO 790,860
53
+ 470 IF S<>V THEN 490
54
+ 480 IF Z=1 THEN 520
55
+ 485 Q=1:GOTO 500
56
+ 490 IF W(R,S+1)<>0 THEN 520
57
+ 500 X=INT(RND(1)*2+1)
58
+ 510 ON X GOTO 790,910
59
+ 520 GOTO 790
60
+ 530 IF S-1=0 THEN 670
61
+ 540 IF W(R,S-1)<>0 THEN 670
62
+ 545 IF R=H THEN 610
63
+ 547 IF W(R+1,S)<>0 THEN 610
64
+ 550 IF S<>V THEN 560
65
+ 552 IF Z=1 THEN 590
66
+ 554 Q=1:GOTO 570
67
+ 560 IF W(R,S+1)<>0 THEN 590
68
+ 570 X=INT(RND(1)*3+1)
69
+ 580 ON X GOTO 820,860,910
70
+ 590 X=INT(RND(1)*2+1)
71
+ 600 ON X GOTO 820,860
72
+ 610 IF S<>V THEN 630
73
+ 620 IF Z=1 THEN 660
74
+ 625 Q=1:GOTO 640
75
+ 630 IF W(R,S+1)<>0 THEN 660
76
+ 640 X=INT(RND(1)*2+1)
77
+ 650 ON X GOTO 820,910
78
+ 660 GOTO 820
79
+ 670 IF R=H THEN 740
80
+ 680 IF W(R+1,S)<>0 THEN 740
81
+ 685 IF S<>V THEN 700
82
+ 690 IF Z=1 THEN 730
83
+ 695 Q=1:GOTO 830
84
+ 700 IF W(R,S+1)<>0 THEN 730
85
+ 710 X=INT(RND(1)*2+1)
86
+ 720 ON X GOTO 860,910
87
+ 730 GOTO 860
88
+ 740 IF S<>V THEN 760
89
+ 750 IF Z=1 THEN 780
90
+ 755 Q=1:GOTO 770
91
+ 760 IF W(R,S+1)<>0 THEN 780
92
+ 770 GOTO 910
93
+ 780 GOTO 1000
94
+ 790 W(R-1,S)=C
95
+ 800 C=C+1:V(R-1,S)=2:R=R-1
96
+ 810 IF C=H*V+1 THEN 1010
97
+ 815 Q=0:GOTO 260
98
+ 820 W(R,S-1)=C
99
+ 830 C=C+1
100
+ 840 V(R,S-1)=1:S=S-1:IF C=H*V+1 THEN 1010
101
+ 850 Q=0:GOTO 260
102
+ 860 W(R+1,S)=C
103
+ 870 C=C+1:IF V(R,S)=0 THEN 880
104
+ 875 V(R,S)=3:GOTO 890
105
+ 880 V(R,S)=2
106
+ 890 R=R+1
107
+ 900 IF C=H*V+1 THEN 1010
108
+ 905 GOTO 530
109
+ 910 IF Q=1 THEN 960
110
+ 920 W(R,S+1)=C:C=C+1:IF V(R,S)=0 THEN 940
111
+ 930 V(R,S)=3:GOTO 950
112
+ 940 V(R,S)=1
113
+ 950 S=S+1:IF C=H*V+1 THEN 1010
114
+ 955 GOTO 260
115
+ 960 Z=1
116
+ 970 IF V(R,S)=0 THEN 980
117
+ 975 V(R,S)=3:Q=0:GOTO 1000
118
+ 980 V(R,S)=1:Q=0:R=1:S=1:GOTO 250
119
+ 1000 GOTO 210
120
+ 1010 FOR J=1 TO V
121
+ 1011 PRINT "I";
122
+ 1012 FOR I=1 TO H
123
+ 1013 IF V(I,J)<2 THEN 1030
124
+ 1020 PRINT " ";
125
+ 1021 GOTO 1040
126
+ 1030 PRINT " I";
127
+ 1040 NEXT I
128
+ 1041 PRINT
129
+ 1043 FOR I=1 TO H
130
+ 1045 IF V(I,J)=0 THEN 1060
131
+ 1050 IF V(I,J)=2 THEN 1060
132
+ 1051 PRINT ": ";
133
+ 1052 GOTO 1070
134
+ 1060 PRINT ":--";
135
+ 1070 NEXT I
136
+ 1071 PRINT "."
137
+ 1072 NEXT J
138
+ 1073 END
@@ -0,0 +1,32 @@
1
+ AMAZING PROGRAM
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+
7
+ WHAT ARE YOUR WIDTH AND LENGTH? 10,10
8
+
9
+
10
+
11
+
12
+ .--.--.--.--.--. .--.--.--.--.
13
+ I I I I
14
+ : : : : :--: :--:--:--: .
15
+ I I I I I
16
+ : :--:--:--: : :--:--:--:--.
17
+ I I I I I I I
18
+ : : :--: : : : : :--: .
19
+ I I I I I I I
20
+ :--:--: :--:--:--: : :--: .
21
+ I I I I I I
22
+ : : :--: : :--:--:--: : .
23
+ I I I I I I
24
+ : : :--:--: : :--:--:--: .
25
+ I I I I I I I I
26
+ : :--: : : : : : : : .
27
+ I I I I I I I I
28
+ : : :--:--:--: : :--:--:--.
29
+ I I I I I
30
+ : : :--:--: : :--:--:--: .
31
+ I I I I I
32
+ :--:--:--:--:--: :--:--:--:--.