From d6175bb84afe03327eff455feb14d85e1e02803d Mon Sep 17 00:00:00 2001 From: Tim Wundenberg Date: Wed, 23 Jul 2025 17:13:53 +0200 Subject: [PATCH] feat: add first loose condition --- src/game.zig | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/game.zig b/src/game.zig index 32a5a74..37513fe 100644 --- a/src/game.zig +++ b/src/game.zig @@ -73,6 +73,12 @@ const Game = struct { } const newHead = self.body.items[0] + self.direction.vector(); + if (newHead[0] == 0 or newHead[0] == self.playFieldSize[0] or + newHead[1] == 0 or newHead[1] == self.playFieldSize[1]) + { + self.state = State.lost; + return; + } try self.body.insert(0, newHead); _ = self.body.pop(); } @@ -116,7 +122,22 @@ test "should not be able to change direction to the previous position" { try testing.expectEqual(Direction.right, game.direction); } -test "should loose if exiting playField" {} +test "should loose if exiting playField right" { + const allocator = testing.allocator; + + var game = try Game.create(allocator); + defer game.deinit(); + + for (0..10) |_| { + try game.tick(); + } + + const expected = [_]Vec2{ Vec2{ 19, 10 }, Vec2{ 18, 10 }, Vec2{ 17, 10 } }; + try testing.expectEqualSlices(Vec2, &expected, game.body.items); + + try testing.expectEqual(State.lost, game.state); +} + test "should loose if eating itself" {} test "should grow if eating food" {} test "should win if no space is left" {}