aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2024-05-26 23:50:58 +0100
committerGene Pasquet <dev@etenil.net>2024-05-26 23:50:58 +0100
commit4a1539a25ff09e02f751b725d4accbef1991451b (patch)
treeeb3a0e11cf25bbe69476a914726952d35f2e8562
parent09c101f8a67917d5c79de0b1107dd79d99aef9e4 (diff)
Rewrite turbo.scm as a standalone module
-rw-r--r--.gitignore3
-rw-r--r--Makefile6
-rw-r--r--README.md10
-rw-r--r--turbo.scm105
4 files changed, 84 insertions, 40 deletions
diff --git a/.gitignore b/.gitignore
index 29e40ea..4cbca85 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/Makefile b/Makefile
index e1dc26c..425d612 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/README.md b/README.md
index b3e2d5f..eb37d53 100644
--- a/README.md
+++ b/README.md
@@ -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
+```
diff --git a/turbo.scm b/turbo.scm
index 2a9f3d3..3710227 100644
--- a/turbo.scm
+++ b/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)