From a7ae25ec086117e133b2dfbbc1c5025aa2f29964 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 8 Sep 2024 19:49:47 -0400 Subject: Add example game using raylib --- examples/game/player.tm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 examples/game/player.tm (limited to 'examples/game/player.tm') diff --git a/examples/game/player.tm b/examples/game/player.tm new file mode 100644 index 00000000..5aff9ea5 --- /dev/null +++ b/examples/game/player.tm @@ -0,0 +1,31 @@ +# Defines a struct representing the player, which is controlled by WASD keys +use libraylib.so +use +use + +use vectors +use ./world.tm + +struct Player(pos,prev_pos:Vec2): + WALK_SPEED := 500. + ACCEL := 0.3 + FRICTION := 0.99 + SIZE := Vec2(50, 50) + + func update(p:&Player): + target_x := inline C ( + (Num_t)((IsKeyDown(KEY_A) ? -1 : 0) + (IsKeyDown(KEY_D) ? 1 : 0)) + ) : Num + target_y := inline C ( + (Num_t)((IsKeyDown(KEY_W) ? -1 : 0) + (IsKeyDown(KEY_S) ? 1 : 0)) + ) : Num + target_vel := Vec2(target_x, target_y):norm() * WALK_SPEED + + vel := (p.pos - p.prev_pos)/World.DT + vel *= FRICTION + vel = vel:mix(target_vel, ACCEL) + + p.prev_pos, p.pos = p.pos, p.pos + World.DT*vel + + func draw(p:&Player): + Color.RED:draw_rectangle(p.pos, Player.SIZE) -- cgit v1.2.3