diff --git a/repl/repl_main.c b/repl/repl_main.c index 2f51250..617a20e 100644 --- a/repl/repl_main.c +++ b/repl/repl_main.c @@ -94,6 +94,10 @@ void repl(const char* initialInput) { if (initialInput) { free((void*)initialInput); initialInput = NULL; + + if (interpreter.panic) { + break; + } } } diff --git a/scripts/level.toy b/scripts/level.toy index 29479ba..317bf2b 100644 --- a/scripts/level.toy +++ b/scripts/level.toy @@ -1,19 +1,21 @@ //constants -var WIDTH: int const = 10; -var HEIGHT: int const = 10; +var WIDTH: int const = 12; +var HEIGHT: int const = 12; //WIDTH * HEIGHT in size var tiles: [[int]] const = [ - [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], + [1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1], + [1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1], + [1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1], + [1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1], + [1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1], + [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] //BUG: map is twisted along this diagonal ]; var tileset: [int: string] const = [ @@ -42,7 +44,7 @@ fn draw() { print "\n"; } -fn move(xrel: int, yrel: int) { +fn moveRelative(xrel: int, yrel: int) { if (xrel > 1 || xrel < -1 || yrel > 1 || yrel < -1 || (xrel != 0 && yrel != 0)) { print "too fast!\n"; return; @@ -59,5 +61,15 @@ fn move(xrel: int, yrel: int) { draw(); } +//wrap for easy use +var up: [int] const = [0, -1]; +var down: [int] const = [0, 1]; +var left: [int] const = [-1, 0]; +var right: [int] const = [1, 0]; + +fn move(dir: [int] const) { + return moveRelative(dir[0], dir[1]); +} + //initial display -move(0, 0); \ No newline at end of file +move([0, 0]);