diff options
author | Gene Pasquet <dev@etenil.net> | 2024-05-19 10:28:36 +0100 |
---|---|---|
committer | Gene Pasquet <dev@etenil.net> | 2024-05-19 10:28:36 +0100 |
commit | 5160d65741662dc86286edc2d39e4fa33e1380c2 (patch) | |
tree | 2824e5787551fcd38d970dc439410b1d680a3640 | |
parent | bbbf8d68b8619ae0bd9df952759e072add09b2a3 (diff) |
Let the user crash out of the road
-rw-r--r-- | TODO.org | 13 | ||||
-rw-r--r-- | turbo.scm | 53 |
2 files changed, 56 insertions, 10 deletions
diff --git a/TODO.org b/TODO.org new file mode 100644 index 0000000..69d8e4a --- /dev/null +++ b/TODO.org @@ -0,0 +1,13 @@ +* Stuff left to do + +** TODO Detect when player leaves the road +** TODO Add non-player cars onto the road +** TODO Detect collision with other vehicles +** TODO Add weapon to player car +*** TODO Make weapon a power-up +*** TODO Make weapon use limited (bullet? time?) +** TODO Add graphical speedometer (look at knight rider) +** TODO Improve visuals +** TODO Add start menu +** TODO Add music +** TODO Add sound effects @@ -11,11 +11,13 @@ (define road-start-y 80) (define road-section-position 0) (define road (load-tileset "road.png" lane-length lane-height)) -(define grass (load-image "grass.png")) -(define grass-height 96) +(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 "grass.png")) +(define grass-height 96) (define vehicle-height 45) (define vehicle-length 100) @@ -28,7 +30,7 @@ (define player-max-speed 20) (define player-speed player-min-speed) -(define load-complete #f) +(define game-over #f) ;;;; Game functions @@ -66,25 +68,56 @@ (+ (lane-y 3) (/ (- lane-height vehicle-height) 2)))) +(define player-rotation 0) + +(define (player-on-road?) + (and (> (vec2-y player-position) road-start-y) + (< (+ (vec2-y player-position) vehicle-height) road-end-y))) + +(define (off-road-player-top) + (set! player-rotation 1) + (set! player-position (vec2+ player-position (vec2 0 30))) + (set! player-speed 0)) +(define (off-road-player-bottom) + (set! player-rotation -1) + (set! player-position (vec2+ player-position (vec2 0 -10))) + (set! player-speed 0)) + +(define (off-road-player) + "Moves the player off-road" + (if (> (vec2-y player-position) road-start-y) + (off-road-player-top) + (off-road-player-bottom))) + ;;;; Chickadee hooks (define (update interval) - (set! road-section-position - (if (< road-section-position (* lane-length -1)) - (- (+ road-section-position lane-length) player-speed) - (- road-section-position player-speed))) + (if (not game-over) + (begin + (if (not (player-on-road?)) + (begin + (off-road-player) + (set! game-over #t))) - (set! player-position (vec2+ player-position player-velocity))) + (set! road-section-position + (if (< road-section-position (* lane-length -1)) + (- (+ road-section-position lane-length) player-speed) + (- road-section-position player-speed))) + + (set! player-position (vec2+ player-position player-velocity))))) (define (draw alpha) - (draw-road road-section-position road-start-y 5) + (draw-road road-section-position road-start-y road-num-lanes) (draw-text "Turbo Racers!" (vec2 260.0 (- (window-height (current-window)) 25))) (draw-text (format #f "Speed: ~smph" (* player-speed 5)) (vec2 450.0 20.0)) - (draw-sprite player-car player-position)) + (draw-sprite player-car player-position #:rotation player-rotation) + + (if game-over + (draw-text "GAME OVER" (vec2 260 (/ (window-width (current-window)) 2))))) |