From 97fd389f9e6970c8bc8176e31d451818a9a2a5eb Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Sun, 10 Nov 2024 11:13:40 +0700 Subject: [PATCH] Lisp version --- .gitignore | 1 + game.lisp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 game.lisp diff --git a/.gitignore b/.gitignore index bce9b94..16c8ed7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /boids /boids_main /libboids.so +/game.fasl diff --git a/game.lisp b/game.lisp new file mode 100644 index 0000000..14ae37d --- /dev/null +++ b/game.lisp @@ -0,0 +1,50 @@ +(eval-when (:compile-toplevel :load-toplevel :execute) + (ql:quickload :cl-raylib)) + +(defpackage :raylib-user + (:use :cl :3d-vectors) + (:local-nicknames (:rl :raylib))) + +(in-package :raylib-user) + +(defparameter *terrain-txt* + (rl:load-texture (uiop:native-namestring (asdf:system-relative-pathname + 'cl-raylib + "assets/Terrain/Ground/Tilemap_Flat.png")))) +(defparameter *move-speed* 2.0) + +(defstruct game-state + (player-pos (vec 100 100))) + +(defun game-input (state) + (with-slots ((pos player-pos)) state + (let ((dx 0.0) (dy 0.0)) + (when (rl:is-key-down :key-right) (incf dx 1)) + (when (rl:is-key-down :key-left) (decf dx 1)) + (when (rl:is-key-down :key-up) (decf dy 1)) + (when (rl:is-key-down :key-down) (incf dy 1)) + (setf pos (v+ pos (v* (vunit* (vec dx dy)) *move-speed*)))))) + +(defun game-update (state) '()) + +(defun game-draw (state) + (rl:draw-rectangle-v (game-state-player-pos state) + (vec 100 100) + :skyblue) + (rl:draw-texture-v *terrain-txt* (vec 500 400) (rl:make-color 1.0 1.0 1.0 1.0)) + (rl:draw-fps 10 5)) + +(defun main () + (let* ((screen-width 900) + (screen-height 700) + (game-state (make-game-state))) + (rl:with-window (screen-width screen-height "RTS") + (rl:set-target-fps 60) + (loop :until (rl:window-should-close) + :do (game-input game-state) + (game-update game-state) + (rl:with-drawing + (rl:clear-background :raywhite) + (game-draw game-state)))))) + +(main)