From 3776bfd81216a701577bc430f892e57af924c828 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 27 Nov 2021 15:42:14 -0600 Subject: [PATCH] making the snake example "complete" --- tests/snake.onyx | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/tests/snake.onyx b/tests/snake.onyx index 66da1f5..46583eb 100644 --- a/tests/snake.onyx +++ b/tests/snake.onyx @@ -97,6 +97,7 @@ Main_Menu_Options :: struct { option_1 := () { active_menu = .{void}; state = .Playing; + reset_game(); }; ["Quit"] @@ -108,16 +109,15 @@ Main_Menu_Options :: struct { Lost_Options :: struct { ["Play again"] option_1 := () { - + active_menu = .{void}; + state = .Playing; + reset_game(); }; ["Main menu"] option_2 := () { state = .MainMenu; active_menu = .{ Main_Menu_Options }; - - the_snake = snake_make(.{ 0, 0 }); - the_food = .{ 10, 10 }; }; } @@ -125,16 +125,22 @@ active_menu: Menu; load :: () { random.set_seed(clock.time()); - hb.window.setTitle("Snake 🐍"); + hb.window.setTitle("Snake 🐍"); hb.utils.load_assets(^assets); - the_snake = snake_make(.{ 0, 0 }); - the_food = .{ 10, 10 }; - active_menu = .{ Main_Menu_Options }; } +reset_game :: () { + if the_snake.body.data != null { + array.free(^the_snake.body); + } + + the_snake = snake_make(.{ 0, 0 }); + the_food = .{ random.between(0, 15), random.between(0, 10) }; +} + cell_contains_snake_body :: (p: Vec2i) => { for ^it: the_snake.body { if *it == p do return true; -- 2.25.1