aboutsummaryrefslogtreecommitdiff
path: root/turbo.scm
diff options
context:
space:
mode:
Diffstat (limited to 'turbo.scm')
-rw-r--r--turbo.scm53
1 files changed, 43 insertions, 10 deletions
diff --git a/turbo.scm b/turbo.scm
index 47f9265..eb7f656 100644
--- a/turbo.scm
+++ b/turbo.scm
@@ -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)))))