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,416 @@
1
+ 2 PRINT TAB(33);"POKER"
2
+ 4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 6 PRINT: PRINT: PRINT
4
+ 10 DIM A(50),B(15)
5
+ 20 DEF FNA(X)=INT(10*RND(1))
6
+ 30 DEF FNB(X)=X-100*INT(X/100)
7
+ 40 PRINT "WELCOME TO THE CASINO. WE EACH HAVE $200."
8
+ 50 PRINT "I WILL OPEN THE BETTING BEFORE THE DRAW; YOU OPEN AFTER."
9
+ 60 PRINT "TO FOLD BET 0; TO CHECK BET .5."
10
+ 70 PRINT "ENOUGH TALK -- LET'S GET DOWN TO BUSINESS."
11
+ 80 PRINT
12
+ 90 LET O=1
13
+ 100 LET C=200
14
+ 110 LET S=200
15
+ 120 LET P=0
16
+ 130 REM
17
+ 140 PRINT
18
+ 150 IF C<=5 THEN 3670
19
+ 160 PRINT "THE ANTE IS $5. I WILL DEAL:"
20
+ 170 PRINT
21
+ 180 IF S>5 THEN 200
22
+ 190 GOSUB 3830
23
+ 200 LET P=P+10
24
+ 210 LET S=S-5
25
+ 220 LET C=C-5
26
+ 230 FOR Z=1 TO 10
27
+ 240 GOSUB 1740
28
+ 250 NEXT Z
29
+ 260 PRINT "YOUR HAND:"
30
+ 270 N=1
31
+ 280 GOSUB 1850
32
+ 290 N=6
33
+ 300 I=2
34
+ 310 GOSUB 2170
35
+ 320 PRINT
36
+ 330 IF I<>6 THEN 470
37
+ 340 IF FNA(0)<=7 THEN 370
38
+ 350 LET X=11100
39
+ 360 GOTO 420
40
+ 370 IF FNA(0)<=7 THEN 400
41
+ 380 LET X=11110
42
+ 390 GOTO 420
43
+ 400 IF FNA(0)>=1 THEN 450
44
+ 410 X=11111
45
+ 420 I=7
46
+ 430 Z=23
47
+ 440 GOTO 580
48
+ 450 Z=1
49
+ 460 GOTO 510
50
+ 470 IF U>=13 THEN 540
51
+ 480 IF FNA(0)>=2 THEN 500
52
+ 490 GOTO 420
53
+ 500 Z=0
54
+ 510 K=0
55
+ 520 PRINT "I CHECK."
56
+ 530 GOTO 620
57
+ 540 IF U<=16 THEN 570
58
+ 550 Z=2
59
+ 560 IF FNA(0)>=1 THEN 580
60
+ 570 Z=35
61
+ 580 V=Z+FNA(0)
62
+ 590 GOSUB 3480
63
+ 600 PRINT "I'LL OPEN WITH $"V
64
+ 610 K=V
65
+ 620 GOSUB 3050
66
+ 630 GOSUB 650
67
+ 640 GOTO 820
68
+ 650 IF I<>3 THEN 760
69
+ 660 PRINT
70
+ 670 PRINT "I WIN."
71
+ 680 C=C+P
72
+ 690 PRINT "NOW I HAVE $"C"AND YOU HAVE $"S
73
+ 700 PRINT "DO YOU WISH TO CONTINUE";
74
+ 710 INPUT H$
75
+ 720 IF H$="YES" THEN 120
76
+ 730 IF H$="NO" THEN 4100
77
+ 740 PRINT "ANSWER YES OR NO, PLEASE."
78
+ 750 GOTO 700
79
+ 760 IF I<>4 THEN 810
80
+ 770 PRINT
81
+ 780 PRINT "YOU WIN."
82
+ 790 S=S+P
83
+ 800 GOTO 690
84
+ 810 RETURN
85
+ 820 PRINT
86
+ 830 PRINT "NOW WE DRAW -- HOW MANY CARDS DO YOU WANT";
87
+ 840 INPUT T
88
+ 850 IF T=0 THEN 980
89
+ 860 Z=10
90
+ 870 IF T<4 THEN 900
91
+ 880 PRINT "YOU CAN'T DRAW MORE THAN THREE CARDS."
92
+ 890 GOTO 840
93
+ 900 PRINT "WHAT ARE THEIR NUMBERS:"
94
+ 910 FOR Q=1 TO T
95
+ 920 INPUT U
96
+ 930 GOSUB 1730
97
+ 940 NEXT Q
98
+ 950 PRINT "YOUR NEW HAND:"
99
+ 960 N=1
100
+ 970 GOSUB 1850
101
+ 980 Z=10+T
102
+ 990 FOR U=6 TO 10
103
+ 1000 IF INT(X/10^(U-6))<>10*INT(X/10^(U-5)) THEN 1020
104
+ 1010 GOSUB 1730
105
+ 1020 NEXT U
106
+ 1030 PRINT
107
+ 1040 PRINT "I AM TAKING"Z-10-T"CARD";
108
+ 1050 IF Z=11+T THEN 1090
109
+ 1060 PRINT "S"
110
+ 1070 PRINT
111
+ 1080 GOTO 1100
112
+ 1090 PRINT
113
+ 1100 N=6
114
+ 1110 V=I
115
+ 1120 I=1
116
+ 1130 GOSUB 2170
117
+ 1140 B=U
118
+ 1150 M=D
119
+ 1160 IF V<>7 THEN 1190
120
+ 1170 Z=28
121
+ 1180 GOTO 1330
122
+ 1190 IF I<>6 THEN 1220
123
+ 1200 Z=1
124
+ 1210 GOTO 1330
125
+ 1220 IF U>=13 THEN 1270
126
+ 1230 Z=2
127
+ 1240 IF FNA(0)<>6 THEN 1260
128
+ 1250 Z=19
129
+ 1260 GOTO 1330
130
+ 1270 IF U>=16 THEN 1320
131
+ 1280 Z=19
132
+ 1290 IF FNA(0)<>8 THEN 1310
133
+ 1300 Z=11
134
+ 1310 GOTO 1330
135
+ 1320 Z=2
136
+ 1330 K=0
137
+ 1340 GOSUB 3050
138
+ 1350 IF T<>.5 THEN 1450
139
+ 1360 IF V=7 THEN 1400
140
+ 1370 IF I<>6 THEN 1400
141
+ 1380 PRINT "I'LL CHECK"
142
+ 1390 GOTO 1460
143
+ 1400 V=Z+FNA(0)
144
+ 1410 GOSUB 3480
145
+ 1420 PRINT "I'LL BET $"V
146
+ 1430 K=V
147
+ 1440 GOSUB 3060
148
+ 1450 GOSUB 650
149
+ 1460 PRINT
150
+ 1470 PRINT "NOW WE COMPARE HANDS:"
151
+ 1480 J$=H$
152
+ 1490 K$=I$
153
+ 1500 PRINT "MY HAND:"
154
+ 1510 N=6
155
+ 1520 GOSUB 1850
156
+ 1530 N=1
157
+ 1540 GOSUB 2170
158
+ 1550 PRINT
159
+ 1560 PRINT "YOU HAVE ";
160
+ 1570 K=D
161
+ 1580 GOSUB 3690
162
+ 1590 H$=J$
163
+ 1600 I$=K$
164
+ 1610 K=M
165
+ 1620 PRINT "AND I HAVE ";
166
+ 1630 GOSUB 3690
167
+ 1640 IF B>U THEN 670
168
+ 1650 IF U>B THEN 780
169
+ 1660 IF H$="A FLUS" THEN 1700
170
+ 1662 IF FNB(M)<FNB(D) THEN 780
171
+ 1664 IF FNB(M)>FNB(D) THEN 670
172
+ 1670 PRINT "THE HAND IS DRAWN."
173
+ 1680 PRINT "ALL $"P"REMAINS IN THE POT."
174
+ 1690 GOTO 140
175
+ 1700 IF FNB(M)>FNB(D) THEN 670
176
+ 1710 IF FNB(D)>FNB(M) THEN 780
177
+ 1720 GOTO 1670
178
+ 1730 Z=Z+1
179
+ 1740 A(Z)=100*INT(4*RND(1))+INT(100*RND(1))
180
+ 1750 IF INT(A(Z)/100)>3 THEN 1740
181
+ 1760 IF A(Z)-100*INT(A(Z)/100)>12 THEN 1740
182
+ 1765 IF Z=1 THEN 1840
183
+ 1770 FOR K=1 TO Z-1
184
+ 1780 IF A(Z)=A(K) THEN 1740
185
+ 1790 NEXT K
186
+ 1800 IF Z<=10 THEN 1840
187
+ 1810 N=A(U)
188
+ 1820 A(U)=A(Z)
189
+ 1830 A(Z)=N
190
+ 1840 RETURN
191
+ 1850 FOR Z=N TO N+4
192
+ 1860 PRINT Z"-- ";
193
+ 1870 GOSUB 1950
194
+ 1880 PRINT " OF";
195
+ 1890 GOSUB 2070
196
+ 1900 IF Z/2<>INT(Z/2) THEN 1920
197
+ 1910 PRINT
198
+ 1920 NEXT Z
199
+ 1930 PRINT
200
+ 1940 RETURN
201
+ 1950 K=FNB(A(Z))
202
+ 1960 IF K<>9 THEN 1980
203
+ 1970 PRINT "JACK";
204
+ 1980 IF K<>10 THEN 2000
205
+ 1990 PRINT "QUEEN";
206
+ 2000 IF K<>11 THEN 2020
207
+ 2010 PRINT "KING";
208
+ 2020 IF K<>12 THEN 2040
209
+ 2030 PRINT "ACE";
210
+ 2040 IF K>=9 THEN 2060
211
+ 2050 PRINT K+2;
212
+ 2060 RETURN
213
+ 2070 K=INT(A(Z)/100)
214
+ 2080 IF K<>0 THEN 2100
215
+ 2090 PRINT " CLUBS",
216
+ 2100 IF K<>1 THEN 2120
217
+ 2110 PRINT " DIAMONDS",
218
+ 2120 IF K<>2 THEN 2140
219
+ 2130 PRINT " HEARTS",
220
+ 2140 IF K<>3 THEN 2160
221
+ 2150 PRINT " SPADES",
222
+ 2160 RETURN
223
+ 2170 U=0
224
+ 2180 FOR Z=N TO N+4
225
+ 2190 B(Z)=FNB(A(Z))
226
+ 2200 IF Z=N+4 THEN 2230
227
+ 2210 IF INT(A(Z)/100)<>INT(A(Z+1)/100) THEN 2230
228
+ 2220 U=U+1
229
+ 2230 NEXT Z
230
+ 2240 IF U<>4 THEN 2310
231
+ 2250 X=11111
232
+ 2260 D=A(N)
233
+ 2270 H$="A FLUS"
234
+ 2280 I$="H IN"
235
+ 2290 U=15
236
+ 2300 RETURN
237
+ 2310 FOR Z=N TO N+3
238
+ 2320 FOR K=Z+1 TO N+4
239
+ 2330 IF B(Z)<=B(K) THEN 2390
240
+ 2340 X=A(Z)
241
+ 2350 A(Z)=A(K)
242
+ 2360 B(Z)=B(K)
243
+ 2370 A(K)=X
244
+ 2380 B(K)=A(K)-100*INT(A(K)/100)
245
+ 2390 NEXT K
246
+ 2400 NEXT Z
247
+ 2410 X=0
248
+ 2420 FOR Z=N TO N+3
249
+ 2430 IF B(Z)<>B(Z+1) THEN 2470
250
+ 2440 X=X+11*10^(Z-N)
251
+ 2450 D=A(Z)
252
+ 2460 GOSUB 2760
253
+ 2470 NEXT Z
254
+ 2480 IF X<>0 THEN 2620
255
+ 2490 IF B(N)+3<>B(N+3) THEN 2520
256
+ 2500 X=1111
257
+ 2510 U=10
258
+ 2520 IF B(N+1)+3<>B(N+4) THEN 2620
259
+ 2530 IF U<>10 THEN 2600
260
+ 2540 U=14
261
+ 2550 H$="STRAIG"
262
+ 2560 I$="HT"
263
+ 2570 X=11111
264
+ 2580 D=A(N+4)
265
+ 2590 RETURN
266
+ 2600 U=10
267
+ 2610 X=11110
268
+ 2620 IF U>=10 THEN 2690
269
+ 2630 D=A(N+4)
270
+ 2640 H$="SCHMAL"
271
+ 2650 I$="TZ, "
272
+ 2660 U=9
273
+ 2670 X=11000
274
+ 2680 GOTO 2740
275
+ 2690 IF U<>10 THEN 2720
276
+ 2700 IF I=1 THEN 2740
277
+ 2710 GOTO 2750
278
+ 2720 IF U>12 THEN 2750
279
+ 2730 IF FNB(D)>6 THEN 2750
280
+ 2740 I=6
281
+ 2750 RETURN
282
+ 2760 IF U>=11 THEN 2810
283
+ 2770 U=11
284
+ 2780 H$="A PAIR"
285
+ 2790 I$=" OF "
286
+ 2800 RETURN
287
+ 2810 IF U<>11 THEN 2910
288
+ 2820 IF B(Z)<>B(Z-1) THEN 2870
289
+ 2830 H$="THREE"
290
+ 2840 I$=" "
291
+ 2850 U=13
292
+ 2860 RETURN
293
+ 2870 H$="TWO P"
294
+ 2880 I$="AIR, "
295
+ 2890 U=12
296
+ 2900 RETURN
297
+ 2910 IF U>12 THEN 2960
298
+ 2920 U=16
299
+ 2930 H$="FULL H"
300
+ 2940 I$="OUSE, "
301
+ 2950 RETURN
302
+ 2960 IF B(Z)<>B(Z-1) THEN 3010
303
+ 2970 U=17
304
+ 2980 H$="FOUR"
305
+ 2990 I$=" "
306
+ 3000 RETURN
307
+ 3010 U=16
308
+ 3020 H$="FULL H"
309
+ 3030 I$="OUSE, "
310
+ 3040 RETURN
311
+ 3050 G=0
312
+ 3060 PRINT:PRINT "WHAT IS YOUR BET";
313
+ 3070 INPUT T
314
+ 3080 IF T-INT(T)=0 THEN 3140
315
+ 3090 IF K<>0 THEN 3120
316
+ 3100 IF G<>0 THEN 3120
317
+ 3110 IF T=.5 THEN 3410
318
+ 3120 PRINT "NO SMALL CHANGE, PLEASE."
319
+ 3130 GOTO 3060
320
+ 3140 IF S-G-T>=0 THEN 3170
321
+ 3150 GOSUB 3830
322
+ 3160 GOTO 3060
323
+ 3170 IF T<>0 THEN 3200
324
+ 3180 I=3
325
+ 3190 GOTO 3380
326
+ 3200 IF G+T>=K THEN 3230
327
+ 3210 PRINT "IF YOU CAN'T SEE MY BET, THEN FOLD."
328
+ 3220 GOTO 3060
329
+ 3230 G=G+T
330
+ 3240 IF G=K THEN 3380
331
+ 3250 IF Z<>1 THEN 3420
332
+ 3260 IF G>5 THEN 3300
333
+ 3270 IF Z>=2 THEN 3350
334
+ 3280 V=5
335
+ 3290 GOTO 3420
336
+ 3300 IF Z=1 THEN 3320
337
+ 3310 IF T<=25 THEN 3350
338
+ 3320 I=4
339
+ 3330 PRINT "I FOLD."
340
+ 3340 RETURN
341
+ 3350 IF Z=2 THEN 3430
342
+ 3360 PRINT "I'LL SEE YOU."
343
+ 3370 K=G
344
+ 3380 S=S-G
345
+ 3390 C=C-K
346
+ 3400 P=P+G+K
347
+ 3410 RETURN
348
+ 3420 IF G>3*Z THEN 3350
349
+ 3430 V=G-K+FNA(0)
350
+ 3440 GOSUB 3480
351
+ 3450 PRINT "I'LL SEE YOU, AND RAISE YOU"V
352
+ 3460 K=G+V
353
+ 3470 GOTO 3060
354
+ 3480 IF C-G-V>=0 THEN 3660
355
+ 3490 IF G<>0 THEN 3520
356
+ 3500 V=C
357
+ 3510 RETURN
358
+ 3520 IF C-G>=0 THEN 3360
359
+ 3530 IF (O/2)<>INT(O/2) THEN 3600
360
+ 3540 PRINT "WOULD YOU LIKE TO BUY BACK YOUR WATCH FOR $50";
361
+ 3550 INPUT J$
362
+ 3560 IF LEFT$(J$,1)="N" THEN 3600
363
+ 3570 C=C+50
364
+ 3580 O=O/2
365
+ 3590 RETURN
366
+ 3600 IF O/3<>INT(O/3) THEN 3670
367
+ 3610 PRINT "WOULD YOU LIKE TO BUY BACK YOUR TIE TACK FOR $50";
368
+ 3620 INPUT J$
369
+ 3630 IF LEFT$(J$,1)="N" THEN 3670
370
+ 3640 C=C+50
371
+ 3650 O=O/3
372
+ 3660 RETURN
373
+ 3670 PRINT "I'M BUSTED. CONGRATULATIONS!"
374
+ 3680 STOP
375
+ 3690 PRINT H$;I$;
376
+ 3700 IF H$<>"A FLUS" THEN 3750
377
+ 3710 K=INT(K/100)
378
+ 3720 GOSUB 2080
379
+ 3730 PRINT
380
+ 3740 RETURN
381
+ 3750 K=FNB(K)
382
+ 3760 GOSUB 1960
383
+ 3770 IF H$="SCHMAL" THEN 3790
384
+ 3780 IF H$<>"STRAIG" THEN 3810
385
+ 3790 PRINT " HIGH"
386
+ 3800 RETURN
387
+ 3810 PRINT "'S"
388
+ 3820 RETURN
389
+ 3830 PRINT
390
+ 3840 PRINT "YOU CAN'T BET WITH WHAT YOU HAVEN'T GOT."
391
+ 3850 IF O/2=INT(O/2) THEN 3970
392
+ 3860 PRINT "WOULD YOU LIKE TO SELL YOUR WATCH";
393
+ 3870 INPUT J$
394
+ 3880 IF LEFT$(J$,1)="N" THEN 3970
395
+ 3890 IF FNA(0)>=7 THEN 3930
396
+ 3900 PRINT "I'LL GIVE YOU $75 FOR IT."
397
+ 3910 S=S+75
398
+ 3920 GOTO 3950
399
+ 3930 PRINT "THAT'S A PRETTY CRUMMY WATCH - I'LL GIVE YOU $25."
400
+ 3940 S=S+25
401
+ 3950 O=O*2
402
+ 3960 RETURN
403
+ 3970 IF O/3<>INT(O/3) THEN 4090
404
+ 3980 PRINT "WILL YOU PART WITH THAT DIAMOND TIE TACK":
405
+ 3990 INPUT J$
406
+ 4000 IF LEFT$(J$,1)="N" THEN 4080
407
+ 4010 IF FNA(0)>=6 THEN 4050
408
+ 4020 PRINT "YOU ARE NOW $100 RICHER."
409
+ 4030 S=S+100
410
+ 4040 GOTO 4070
411
+ 4050 PRINT "IT'S PASTE. $25."
412
+ 4060 S=S+25
413
+ 4070 O=O*3
414
+ 4080 RETURN
415
+ 4090 PRINT "YOUR WAD IS SHOT. SO LONG, SUCKER!"
416
+ 4100 END
@@ -0,0 +1,34 @@
1
+ 0
2
+ YES
3
+ 0
4
+ YES
5
+ 5
6
+ 3
7
+ 1,5,4
8
+ 5
9
+ 4
10
+ 0
11
+ YES
12
+ 0.5
13
+ 3
14
+ 1
15
+ 3
16
+ 4
17
+ 0.5
18
+ YES
19
+ 5
20
+ 3
21
+ 3
22
+ 2
23
+ 4
24
+ 0.5
25
+ YES
26
+ 25
27
+ 28
28
+ 3
29
+ 1
30
+ 2
31
+ 5
32
+ 50
33
+ 52
34
+ NO
@@ -0,0 +1,197 @@
1
+ POKER
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+ WELCOME TO THE CASINO. WE EACH HAVE $200.
7
+ I WILL OPEN THE BETTING BEFORE THE DRAW; YOU OPEN AFTER.
8
+ TO FOLD BET 0; TO CHECK BET .5.
9
+ ENOUGH TALK -- LET'S GET DOWN TO BUSINESS.
10
+
11
+
12
+ THE ANTE IS $5. I WILL DEAL:
13
+
14
+ YOUR HAND:
15
+ 1 -- 10 OF CLUBS 2 -- 8 OF HEARTS
16
+ 3 -- ACE OF CLUBS 4 -- QUEEN OF SPADES
17
+ 5 -- KING OF CLUBS
18
+
19
+ I CHECK.
20
+
21
+ WHAT IS YOUR BET? 0
22
+
23
+ I WIN.
24
+ NOW I HAVE $ 205 AND YOU HAVE $ 195
25
+ DO YOU WISH TO CONTINUE? YES
26
+
27
+ THE ANTE IS $5. I WILL DEAL:
28
+
29
+ YOUR HAND:
30
+ 1 -- 3 OF HEARTS 2 -- QUEEN OF HEARTS
31
+ 3 -- ACE OF HEARTS 4 -- 3 OF SPADES
32
+ 5 -- 7 OF DIAMONDS
33
+
34
+ I'LL OPEN WITH $ 32
35
+
36
+ WHAT IS YOUR BET? 0
37
+
38
+ I WIN.
39
+ NOW I HAVE $ 210 AND YOU HAVE $ 190
40
+ DO YOU WISH TO CONTINUE? YES
41
+
42
+ THE ANTE IS $5. I WILL DEAL:
43
+
44
+ YOUR HAND:
45
+ 1 -- 9 OF CLUBS 2 -- 7 OF CLUBS
46
+ 3 -- 7 OF SPADES 4 -- 8 OF DIAMONDS
47
+ 5 -- 5 OF SPADES
48
+
49
+ I CHECK.
50
+
51
+ WHAT IS YOUR BET? 5
52
+ I'LL SEE YOU.
53
+
54
+ NOW WE DRAW -- HOW MANY CARDS DO YOU WANT? 3
55
+ WHAT ARE THEIR NUMBERS:
56
+ ? 1,5,4
57
+ ? 5
58
+ ? 4
59
+ YOUR NEW HAND:
60
+ 1 -- 6 OF SPADES 2 -- 7 OF CLUBS
61
+ 3 -- 7 OF SPADES 4 -- JACK OF HEARTS
62
+ 5 -- 3 OF SPADES
63
+
64
+ I AM TAKING 3 CARDS
65
+
66
+
67
+ WHAT IS YOUR BET? 0
68
+
69
+ I WIN.
70
+ NOW I HAVE $ 220 AND YOU HAVE $ 180
71
+ DO YOU WISH TO CONTINUE? YES
72
+
73
+ THE ANTE IS $5. I WILL DEAL:
74
+
75
+ YOUR HAND:
76
+ 1 -- 9 OF HEARTS 2 -- QUEEN OF SPADES
77
+ 3 -- 4 OF SPADES 4 -- 3 OF CLUBS
78
+ 5 -- 10 OF CLUBS
79
+
80
+ I CHECK.
81
+
82
+ WHAT IS YOUR BET? 0.5
83
+
84
+ NOW WE DRAW -- HOW MANY CARDS DO YOU WANT? 3
85
+ WHAT ARE THEIR NUMBERS:
86
+ ? 1
87
+ ? 3
88
+ ? 4
89
+ YOUR NEW HAND:
90
+ 1 -- 5 OF DIAMONDS 2 -- QUEEN OF SPADES
91
+ 3 -- KING OF SPADES 4 -- 2 OF HEARTS
92
+ 5 -- 10 OF CLUBS
93
+
94
+ I AM TAKING 3 CARDS
95
+
96
+
97
+ WHAT IS YOUR BET? 0.5
98
+ I'LL CHECK
99
+
100
+ NOW WE COMPARE HANDS:
101
+ MY HAND:
102
+ 6 -- 8 OF CLUBS
103
+ 7 -- 10 OF HEARTS 8 -- QUEEN OF CLUBS
104
+ 9 -- KING OF HEARTS 10 -- ACE OF SPADES
105
+
106
+
107
+ YOU HAVE SCHMALTZ, KING HIGH
108
+ AND I HAVE SCHMALTZ, ACE HIGH
109
+ I WIN.
110
+ NOW I HAVE $ 225 AND YOU HAVE $ 175
111
+ DO YOU WISH TO CONTINUE? YES
112
+
113
+ THE ANTE IS $5. I WILL DEAL:
114
+
115
+ YOUR HAND:
116
+ 1 -- 8 OF HEARTS 2 -- 3 OF SPADES
117
+ 3 -- 6 OF HEARTS 4 -- 4 OF DIAMONDS
118
+ 5 -- ACE OF DIAMONDS
119
+
120
+ I CHECK.
121
+
122
+ WHAT IS YOUR BET? 5
123
+ I'LL SEE YOU.
124
+
125
+ NOW WE DRAW -- HOW MANY CARDS DO YOU WANT? 3
126
+ WHAT ARE THEIR NUMBERS:
127
+ ? 3
128
+ ? 2
129
+ ? 4
130
+ YOUR NEW HAND:
131
+ 1 -- 8 OF HEARTS 2 -- KING OF SPADES
132
+ 3 -- 5 OF HEARTS 4 -- 3 OF CLUBS
133
+ 5 -- ACE OF DIAMONDS
134
+
135
+ I AM TAKING 3 CARDS
136
+
137
+
138
+ WHAT IS YOUR BET? 0.5
139
+ I'LL CHECK
140
+
141
+ NOW WE COMPARE HANDS:
142
+ MY HAND:
143
+ 6 -- 2 OF DIAMONDS
144
+ 7 -- 2 OF CLUBS 8 -- 7 OF SPADES
145
+ 9 -- 8 OF CLUBS 10 -- QUEEN OF CLUBS
146
+
147
+
148
+ YOU HAVE SCHMALTZ, ACE HIGH
149
+ AND I HAVE A PAIR OF 2 'S
150
+ I WIN.
151
+ NOW I HAVE $ 235 AND YOU HAVE $ 165
152
+ DO YOU WISH TO CONTINUE? YES
153
+
154
+ THE ANTE IS $5. I WILL DEAL:
155
+
156
+ YOUR HAND:
157
+ 1 -- KING OF HEARTS 2 -- 5 OF DIAMONDS
158
+ 3 -- QUEEN OF CLUBS 4 -- QUEEN OF SPADES
159
+ 5 -- JACK OF HEARTS
160
+
161
+ I'LL OPEN WITH $ 28
162
+
163
+ WHAT IS YOUR BET? 25
164
+ IF YOU CAN'T SEE MY BET, THEN FOLD.
165
+
166
+ WHAT IS YOUR BET? 28
167
+
168
+ NOW WE DRAW -- HOW MANY CARDS DO YOU WANT? 3
169
+ WHAT ARE THEIR NUMBERS:
170
+ ? 1
171
+ ? 2
172
+ ? 5
173
+ YOUR NEW HAND:
174
+ 1 -- 4 OF CLUBS 2 -- ACE OF HEARTS
175
+ 3 -- QUEEN OF CLUBS 4 -- QUEEN OF SPADES
176
+ 5 -- 8 OF DIAMONDS
177
+
178
+ I AM TAKING 0 CARDS
179
+
180
+
181
+ WHAT IS YOUR BET? 50
182
+ I'LL SEE YOU, AND RAISE YOU 52
183
+
184
+ WHAT IS YOUR BET? 52
185
+
186
+ NOW WE COMPARE HANDS:
187
+ MY HAND:
188
+ 6 -- 5 OF HEARTS
189
+ 7 -- 5 OF SPADES 8 -- 7 OF HEARTS
190
+ 9 -- 8 OF SPADES 10 -- 9 OF HEARTS
191
+
192
+
193
+ YOU HAVE A PAIR OF QUEEN'S
194
+ AND I HAVE A PAIR OF 5 'S
195
+ YOU WIN.
196
+ NOW I HAVE $ 100 AND YOU HAVE $ 300
197
+ DO YOU WISH TO CONTINUE? NO