diff options
author | Gene Pasquet <dev@etenil.net> | 2024-05-26 23:50:58 +0100 |
---|---|---|
committer | Gene Pasquet <dev@etenil.net> | 2024-05-26 23:50:58 +0100 |
commit | 4a1539a25ff09e02f751b725d4accbef1991451b (patch) | |
tree | eb3a0e11cf25bbe69476a914726952d35f2e8562 | |
parent | 09c101f8a67917d5c79de0b1107dd79d99aef9e4 (diff) |
Rewrite turbo.scm as a standalone module
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | README.md | 10 | ||||
-rw-r--r-- | turbo.scm | 105 |
4 files changed, 84 insertions, 40 deletions
@@ -48,4 +48,5 @@ flycheck_*.el /network-security.data *.kra -/*.tar.gz
\ No newline at end of file +/*.tar.gz +*.go
\ No newline at end of file @@ -1,7 +1,11 @@ +turbo.go: turbo.scm + guild compile -o turbo.go turbo.scm + .PHONY: play play: - chickadee play -t turbo turbo.scm + guile turbo.scm +# This probably doesn't work anymore. .PHONY: bundle bundle: chickadee bundle @@ -7,4 +7,14 @@ A video game entry for the Spring Lisp Game Jam 2024. * Game design / Code by Guillaume Pasquet and Owen Pasquet * Music / Instrumental by Aries Beats +## Dependencies +- [Chickadee](https://dthompson.us/projects/chickadee.html) + +## How to run + +Execute: + +``` +guile turbo.scm +``` @@ -1,6 +1,9 @@ -(use-modules (chickadee graphics sprite) - (chickadee) +(use-modules (chickadee) + (chickadee graphics sprite) (chickadee graphics viewport) + (chickadee graphics texture) + (chickadee graphics color) + (chickadee graphics text) (chickadee math vector) (chickadee math rect) (srfi srfi-9) @@ -56,27 +59,28 @@ ;;;; Constants and variables -(define the-font (load-bitmap-font "fonts/thick_8x8.xml")) -(define font-7-segments (load-font "fonts/DSEG7Classic-Regular.ttf" 24)) +(define the-font #f) +(define font-7-segments #f) (define lane-height 65) (define lane-length 192) (define road-start-y 80) (define road-section-position 0) -(define road (load-tileset "sprites/road.png" lane-length lane-height)) +(define road #f) (define road-num-lanes 5) (define road-end-y (+ road-start-y (* road-num-lanes lane-height))) -(define road-top (texture-atlas-ref road 2)) -(define road-bottom (texture-atlas-ref road 0)) -(define road-lane (texture-atlas-ref road 1)) -(define grass (load-image "sprites/grass.png")) -(define dashboard-set (load-tileset "sprites/dash-background.png" 64 64)) -(define dash-background (texture-atlas-ref dashboard-set 0)) -(define dash-7seg-background (texture-atlas-ref dashboard-set 1)) +(define road-top #f) +(define road-bottom #f) +(define road-lane #f) +(define grass #f) +(define dashboard-set #f) +(define dash-background #f) +(define dash-7seg-background #f) (define grass-height 96) -(define vehicles-sprites (load-tileset "sprites/vehicles.png" vehicle-length vehicle-height)) +(define vehicles-sprites #f) +(define vehicles '()) (define player-velocity (vec2 0 0)) (define player-min-speed 250) @@ -98,10 +102,10 @@ (define level-difficulty 1) (define max-level 20) -(define music-res (load-audio "sound/music.ogg")) -(define music (make-source #:audio music-res #:loop? #t)) -(define engine-res (load-audio "sound/engine-loop-1.ogg")) -(define engine-sound (make-source #:audio engine-res #:loop? #t)) +(define music-res #f) +(define music #f) +(define engine-res #f) +(define engine-sound #f) (define (calculate-vehicle-position lane) (vec2 (window-width (current-window)) @@ -130,13 +134,6 @@ (set-vehicle-speed! veh (+ player-min-speed (* 75 lane-num)) ) (set-vehicle-active! veh #f))) -(define vehicles (make-vehicle-list (list) 1)) -(for-each vehicle-reset-ahead vehicles) - -;; Important: set one vehicle active to bootstrap the game ???? -;; TODO: nope, bug here somewhere! -(set-vehicle-active! (car vehicles) #t) - (define game-started? #f) (define game-over? #f) (define show-credits? #f) @@ -181,17 +178,9 @@ (+ road-start-y (* lane-height (- num-lane 1)))) -(define initial-player-position - (vec2 (/ (- (window-width (current-window)) vehicle-length) 6) - (+ (lane-y 3) - (/ (- lane-height vehicle-height) 2)))) +(define initial-player-position (vec2 0 0)) -(define player-car (make-vehicle - 0 - (texture-atlas-ref vehicles-sprites 0) - initial-player-position - (+ 1 player-min-speed) - #t)) +(define player-car #f) (define (level-min-speed) (+ player-min-speed (* (- level-difficulty 1) 36))) @@ -269,10 +258,43 @@ ;;;; Chickadee hooks -(set-source-volume! music 0.3) +(define (load) + (set! the-font (load-bitmap-font "fonts/thick_8x8.xml")) + (set! font-7-segments (load-font "fonts/DSEG7Classic-Regular.ttf" 24)) + (set! road (load-tileset "sprites/road.png" lane-length lane-height)) + (set! road-top (texture-atlas-ref road 2)) + (set! road-bottom (texture-atlas-ref road 0)) + (set! road-lane (texture-atlas-ref road 1)) + (set! grass (load-image "sprites/grass.png")) + (set! dashboard-set (load-tileset "sprites/dash-background.png" 64 64)) + (set! dash-background (texture-atlas-ref dashboard-set 0)) + (set! dash-7seg-background (texture-atlas-ref dashboard-set 1)) + (set! vehicles-sprites (load-tileset "sprites/vehicles.png" vehicle-length vehicle-height)) + + (set! initial-player-position + (vec2 (/ (- (window-width (current-window)) vehicle-length) 6) + (+ (lane-y 3) + (/ (- lane-height vehicle-height) 2)))) + (set! player-car (make-vehicle + 0 + (texture-atlas-ref vehicles-sprites 0) + initial-player-position + (+ 1 player-min-speed) + #t)) + + ;; Audio + (set! music-res (load-audio "sound/music.ogg")) + (set! music (make-source #:audio music-res #:loop? #t)) + (set! engine-res (load-audio "sound/engine-loop-1.ogg")) + (set! engine-sound (make-source #:audio engine-res #:loop? #t)) + (set-source-volume! music 0.3) + + (set! vehicles (make-vehicle-list (list) 1)) + (for-each vehicle-reset-ahead vehicles) + (set-vehicle-active! (car vehicles) #t) -(source-play music) -(source-play engine-sound) + (source-play music) + (source-play engine-sound)) (define (update interval) (unless game-over? @@ -286,7 +308,7 @@ ;; Increase level every 2 miles (when (and (< level-difficulty max-level) (> (distance-in-miles) (* 2 level-difficulty))) - (set! level-difficulty (+ 1 level-difficulty))) + (set! level-difficulty (+ 1 level-difficulty))) (if (game-won?) (set! game-over? #t)) @@ -555,3 +577,10 @@ (eq? key 'up) (eq? key 'down)) (set! player-velocity (vec2 0 0))))) + +(run-game #:window-title "Turbo Racer 3000" + #:load load + #:update update + #:draw draw + #:key-press key-press + #:key-release key-release) |