aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2024-05-19 15:07:10 +0100
committerGene Pasquet <dev@etenil.net>2024-05-19 15:07:10 +0100
commit39a8d70fdc7387e7c277bbf6f464d1c1afb1baab (patch)
tree570910778a237f23c95f3fe2e6e5bfdcdc972a7e
parent5160d65741662dc86286edc2d39e4fa33e1380c2 (diff)
Add music, add easy NPC
-rw-r--r--TODO.org7
-rw-r--r--music.oggbin0 -> 2225540 bytes
-rw-r--r--turbo.scm39
3 files changed, 40 insertions, 6 deletions
diff --git a/TODO.org b/TODO.org
index 69d8e4a..dadb33d 100644
--- a/TODO.org
+++ b/TODO.org
@@ -1,7 +1,10 @@
* Stuff left to do
-** TODO Detect when player leaves the road
+** DONE Detect when player leaves the road
** TODO Add non-player cars onto the road
+*** TODO Add constant van on one lane
+*** TODO Put van on random lane
+*** TODO Add multiple vehicles on different lanes
** TODO Detect collision with other vehicles
** TODO Add weapon to player car
*** TODO Make weapon a power-up
@@ -9,5 +12,5 @@
** TODO Add graphical speedometer (look at knight rider)
** TODO Improve visuals
** TODO Add start menu
-** TODO Add music
+** DONE Add music
** TODO Add sound effects
diff --git a/music.ogg b/music.ogg
new file mode 100644
index 0000000..47dca2d
--- /dev/null
+++ b/music.ogg
Binary files differ
diff --git a/turbo.scm b/turbo.scm
index eb7f656..4a569a7 100644
--- a/turbo.scm
+++ b/turbo.scm
@@ -1,6 +1,7 @@
(use-modules (chickadee graphics sprite)
(chickadee)
(chickadee graphics viewport)
+ (chickadee audio)
(ice-9 pretty-print)
(ice-9 format))
@@ -28,7 +29,16 @@
(define player-velocity (vec2 0 0))
(define player-min-speed 4)
(define player-max-speed 20)
-(define player-speed player-min-speed)
+(define player-speed (+ player-min-speed 1))
+(define player-rotation 0)
+
+(define red-van (texture-atlas-ref vehicles 1))
+(define red-van-initial-speed 4)
+(define red-van-speed red-van-initial-speed)
+
+(define music-play? #f)
+(define music-res (load-audio "music.ogg"))
+(define music (make-source #:audio music-res #:loop? #t))
(define game-over #f)
@@ -68,7 +78,13 @@
(+ (lane-y 3)
(/ (- lane-height vehicle-height) 2))))
-(define player-rotation 0)
+(define (calculate-red-van-position lane)
+ (vec2 (window-width (current-window))
+ (+ road-start-y
+ (* 65 (- lane 1))
+ (/ (- lane-height vehicle-height) 2))))
+
+(define red-van-position (calculate-red-van-position 1))
(define (player-on-road?)
(and (> (vec2-y player-position) road-start-y)
@@ -91,6 +107,9 @@
;;;; Chickadee hooks
+(if music-play?
+ (source-play music))
+
(define (update interval)
(if (not game-over)
(begin
@@ -104,7 +123,16 @@
(- (+ road-section-position lane-length) player-speed)
(- road-section-position player-speed)))
- (set! player-position (vec2+ player-position player-velocity)))))
+ (set! player-position (vec2+ player-position player-velocity))
+
+ (set! red-van-speed (- player-speed red-van-initial-speed))
+ (set! red-van-position (vec2- red-van-position (vec2 (* red-van-speed) 0)))
+
+ ;; when van goes off screen
+ (if (>= (* vehicle-length -1) (vec2-x red-van-position))
+ (set! red-van-position (calculate-red-van-position 3)))
+ )
+ ))
(define (draw alpha)
(draw-road road-section-position road-start-y road-num-lanes)
@@ -115,11 +143,12 @@
(vec2 450.0 20.0))
(draw-sprite player-car player-position #:rotation player-rotation)
+
+ (draw-sprite red-van red-van-position)
(if game-over
(draw-text "GAME OVER" (vec2 260 (/ (window-width (current-window)) 2)))))
-
(define (key-press key modifiers repeat?)
(if (eq? key 'w)
@@ -130,6 +159,8 @@
(set! player-speed (max (- player-speed 1) player-min-speed)))
(if (eq? key 'd)
(set! player-speed (min (+ player-speed 1) player-max-speed)))
+ (if (eq? key 'escape)
+ (abort-game))
)
(define (key-release key modifiers)