diff --git a/README.md b/README.md index 9dfaf47..1f20aa1 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,9 @@ logic mostly like https://git.crispypin.cc/CrispyPin/marble story/lore timestamps in solutions and blueprints multiple input/output sets +tooltips +lock tile types for early levels to make it less overwhelming +make a gui alternative to pressing R to rotate between tile variants scroll level list scroll blueprint list make marble movement more consistent (`>o o<` depends on internal marble order) @@ -17,40 +20,43 @@ blueprint rotation? ## file hierarchy ``` - assets/ -- storage/ - - levels/ - - 00_zeroes.json - - 01_cat.json - - 02_parse.json - - 99_sandbox.json +- levels/ + - 00_zeroes.json + - 01_cat.json + - 02_parse.json + - 99_sandbox.json +- user/ - solutions/ - 00_zeroes/ - solution_0.json - solution_1.json - - factorial_194726/ + - 01_cat/ - solution_0.json - - solution_1.json + - solution_3.json - blueprints - blueprint_0.json - - custom_levels/ - - factorial_194726.json ``` - +## formats +### level `00_zeroes.json` ```json { "id": "00_zeroes", + "sortorder": 5, "name": "Zeroes", "description": "learn how to output data", "init_board": null, "inputs": [], - "outputs": [0, 0, 0, 0, 0, 0, 0, 0] + "outputs": [0, 0, 0, 0, 0, 0, 0, 0], + "input_is_text": false, + "output_is_text": false } ``` +### solution `00_zeroes/solution_0.json` ```json { - "level_id": "00_zeroes", //redundant, useful if sharing solution files? + "level_id": "00_zeroes", "solution_id": "solution_0", "name": "unnamed 1", "board": "oo\nP*\n|-", @@ -61,11 +67,34 @@ blueprint rotation? } } ``` - +### blueprint `blueprints/blueprint_0.json` ```json { - "name": "fast printer", - "board": "oo\nP*\n|-" + "id": "blueprint_0", + "name": "zero_printer", + "board": "o -B I\n> * < \n" } -``` \ No newline at end of file +``` + +## levels +### intro, basic mechanics +- output a zero +- output two numbers in sequence +- output zeroes forever (looping) +- copy the input +- copy only odd input numbers +### 0-terminated list processing +- calculate list length +- count instances of 5 in a list +- copy the second list (ignore input until first zero) +- reverse a list +### user-friendly numbers +- convert a number to decimal ascii +- parse an ascii number +- convert text to lowercase +### advanced list processing +- index a list +- search a list +- add two lists element-wise +- sort list