diff options
author | Gene Pasquet <dev@etenil.net> | 2024-05-23 06:18:25 +0100 |
---|---|---|
committer | Gene Pasquet <dev@etenil.net> | 2024-05-23 06:18:25 +0100 |
commit | 46c678537885a6d815f0ba4b2b8a8b16500ae07e (patch) | |
tree | ae043c8b9fb5c2b03936162b9808871422e4e449 | |
parent | b18c2d0643899d5ed44a01285c49875491e4bf1f (diff) |
Fix little speed difference bugs
-rw-r--r-- | TODO.org | 2 | ||||
-rw-r--r-- | turbo.scm | 18 | ||||
-rw-r--r-- | turbo/vehicles.scm | 12 |
3 files changed, 20 insertions, 12 deletions
@@ -8,7 +8,7 @@ *** DONE Ensure vehicles don't overlap ** DONE Detect collision with other vehicles ** DONE Make cars in different lanes drive at different speeds -** DONE Add restart option +** TODO Add restart option ** TODO Smooth acceleration ** TODO Smooth increasing turn rate ** TODO Display level on screen @@ -31,7 +31,7 @@ (define player-max-speed 20) (define player-rotation 0) -(define level-difficulty 50) +(define level-difficulty 1) (define music-play? #t) (define music-res (load-audio "music.ogg")) @@ -77,9 +77,9 @@ (define (vehicle-has-spawn-space? vehicle) (define (vehicle-in-the-way? v) - (and (not (= (vehicle-id vehicle) (vehicle-id v))) - (vehicle-inactive? v) - (vehicle-safety-distance? v vehicle))) + (and (not (vehicle= vehicle v)) + (vehicle-active? v) + (not (vehicle-safety-distance? v vehicle)))) (not (any vehicle-in-the-way? vehicles))) @@ -198,18 +198,22 @@ (set-vehicle-position! player-car (vec2+ (vehicle-position player-car) player-velocity)) (for-each (lambda (veh) - (vehicle-move! veh (vec2 (- 0 (vehicle-speed-diff player-car veh)) 0))) + (vehicle-move! veh (vec2 (- 0 (vehicle-speed- player-car veh)) 0))) (filter vehicle-active? vehicles)) - ;; when vehicle goes off screen + ;; Reset vehicles that have gone off screen (for-each vehicle-reset-ahead (filter vehicle-off-screen? vehicles)) + ;; Randomly respawn vehicles based on level difficulty (if (= 0 (random level-difficulty)) (begin (let* ((inactive-vehicles (filter vehicle-inactive? vehicles)) (spawnable-vehicles (filter vehicle-has-spawn-space? inactive-vehicles))) (if (not (null? spawnable-vehicles)) - (set-vehicle-active! (car spawnable-vehicles) #t))))) + (set-vehicle-active! (list-ref + spawnable-vehicles + (random (length spawnable-vehicles))) + #t))))) ;; End begin ))) diff --git a/turbo/vehicles.scm b/turbo/vehicles.scm index 68d6ced..940011e 100644 --- a/turbo/vehicles.scm +++ b/turbo/vehicles.scm @@ -18,8 +18,9 @@ set-vehicle-active! vehicle-hitbox vehicle-safety-distance? - vehicle-speed-diff - vehicle-move!)) + vehicle-speed- + vehicle-move! + vehicle=)) (define vehicle-height 45) (define vehicle-length 100) @@ -49,8 +50,8 @@ (> (abs (- vehicle2-x vehicle1-x)) (+ (* 3 vehicle-length))))) -(define (vehicle-speed-diff vehicle1 vehicle2) - (abs (- (vehicle-speed vehicle1) (vehicle-speed vehicle2)))) +(define (vehicle-speed- vehicle1 vehicle2) + (- (vehicle-speed vehicle1) (vehicle-speed vehicle2))) (define (vehicle-move! vehicle translation) (set-vehicle-position! @@ -59,3 +60,6 @@ (define (vehicle-inactive? vehicle) (not (vehicle-active? vehicle))) + +(define (vehicle= vehicle1 vehicle2) + (= (vehicle-id vehicle1) (vehicle-id vehicle2))) |