commit a0e37348df914caae559bcdcf0ae385faa74e955
parent b738829e0b30d5e6afb1a0cd17a439107bbe6c74
Author: brookjeynes <me@brookjeynes.dev>
Date: Wed, 29 Jul 2026 11:15:13 +1000
feat: add player out-of-bounds
Signed-off-by: brookjeynes <me@brookjeynes.dev>
Diffstat:
2 files changed, 24 insertions(+), 11 deletions(-)
diff --git a/build.zig b/build.zig
@@ -17,6 +17,7 @@ pub fn build(b: *std.Build) void {
.optimize = optimize,
.imports = &.{
.{ .name = "raylib", .module = raylib.module("raylib") },
+ .{ .name = "raymath", .module = raylib.module("raymath") },
},
}),
});
diff --git a/src/main.zig b/src/main.zig
@@ -1,14 +1,17 @@
const std = @import("std");
const raylib = @import("raylib");
+const raymath = @import("raymath");
pub fn main() !void {
- const screen_width: u16 = 800;
- const screen_height: u16 = 1000;
+ const screen_width: f16 = 800.0;
+ const screen_height: f16 = 1000.0;
const fps: u8 = 60;
- const player_movement_speed: f16 = 4.0;
+ const player_movement_speed: f16 = 170.0;
const player_size: raylib.Vector2 = .{ .x = 50, .y = 50 };
raylib.InitWindow(screen_width, screen_height, "1.44mb game jam");
+ defer raylib.CloseWindow();
+
raylib.SetTargetFPS(fps);
var player_position: raylib.Vector2 = .{
@@ -17,12 +20,25 @@ pub fn main() !void {
};
while (!raylib.WindowShouldClose()) {
- if (raylib.IsKeyDown(raylib.KEY_RIGHT)) player_position.x += player_movement_speed;
- if (raylib.IsKeyDown(raylib.KEY_LEFT)) player_position.x -= player_movement_speed;
- if (raylib.IsKeyDown(raylib.KEY_UP)) player_position.y -= player_movement_speed;
- if (raylib.IsKeyDown(raylib.KEY_DOWN)) player_position.y += player_movement_speed;
+ const delta: f32 = raylib.GetFrameTime();
+ var direction: raylib.Vector2 = .{};
+
+ if (raylib.IsKeyDown(raylib.KEY_RIGHT)) direction.x += 1;
+ if (raylib.IsKeyDown(raylib.KEY_LEFT)) direction.x -= 1;
+ if (raylib.IsKeyDown(raylib.KEY_UP)) direction.y -= 1;
+ if (raylib.IsKeyDown(raylib.KEY_DOWN)) direction.y += 1;
+
+ direction = @bitCast(raymath.Vector2Normalize(@bitCast(direction)));
+ player_position.x += direction.x * player_movement_speed * delta;
+ player_position.y += direction.y * player_movement_speed * delta;
+
+ const max_x: f32 = screen_width - player_size.x;
+ const max_y: f32 = screen_height - player_size.y;
+ player_position.x = @max(0, @min(max_x, player_position.x));
+ player_position.y = @max(0, @min(max_y, player_position.y));
raylib.BeginDrawing();
+ defer raylib.EndDrawing();
raylib.ClearBackground(raylib.RAYWHITE);
@@ -31,9 +47,5 @@ pub fn main() !void {
player_size,
raylib.MAROON,
);
-
- raylib.EndDrawing();
}
-
- raylib.CloseWindow();
}