diff options
author | Gene Pasquet <dev@etenil.net> | 2024-05-19 15:07:10 +0100 |
---|---|---|
committer | Gene Pasquet <dev@etenil.net> | 2024-05-19 15:07:10 +0100 |
commit | 39a8d70fdc7387e7c277bbf6f464d1c1afb1baab (patch) | |
tree | 570910778a237f23c95f3fe2e6e5bfdcdc972a7e | |
parent | 5160d65741662dc86286edc2d39e4fa33e1380c2 (diff) |
Add music, add easy NPC
-rw-r--r-- | TODO.org | 7 | ||||
-rw-r--r-- | music.ogg | bin | 0 -> 2225540 bytes | |||
-rw-r--r-- | turbo.scm | 39 |
3 files changed, 40 insertions, 6 deletions
@@ -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 Binary files differnew file mode 100644 index 0000000..47dca2d --- /dev/null +++ b/music.ogg @@ -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) |