aboutsummaryrefslogtreecommitdiff
path: root/turbo.scm
diff options
context:
space:
mode:
Diffstat (limited to 'turbo.scm')
-rw-r--r--turbo.scm59
1 files changed, 18 insertions, 41 deletions
diff --git a/turbo.scm b/turbo.scm
index 9e16e1f..3497124 100644
--- a/turbo.scm
+++ b/turbo.scm
@@ -4,7 +4,7 @@
(chickadee audio)
(ice-9 pretty-print)
(ice-9 format)
- (srfi srfi-9))
+ (turbo vehicles))
;;;; Constants and variables
@@ -23,9 +23,6 @@
(define grass (load-image "grass.png"))
(define grass-height 96)
-(define vehicle-height 45)
-(define vehicle-length 100)
-(define vehicle-steering-speed 4.0)
(define vehicles-sprites (load-tileset "vehicles.png" vehicle-length vehicle-height))
(define player-car (texture-atlas-ref vehicles-sprites 0))
@@ -35,22 +32,10 @@
(define player-speed (+ player-min-speed 1))
(define player-rotation 0)
-(define red-van (texture-atlas-ref vehicles-sprites 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-record-type <vehicle>
- (make-vehicle id sprite position speed active?)
- vechicle?
- (id vehicle-id)
- (sprite vehicle-sprite)
- (position vehicle-position set-vehicle-position!)
- (speed vehicle-speed set-vehicle-speed!)
- (active? vehicle-active? set-vehicle-active!))
(define (calculate-vehicle-position lane)
(vec2 (window-width (current-window))
@@ -58,15 +43,17 @@
(* 65 (- lane 1))
(/ (- lane-height vehicle-height) 2))))
-(define (make-inactive-vehicle id tile)
- (make-vehicle id tile (calculate-vehicle-position (+ 1 (random 5))) 4 #f))
+(define (random-lane-start-pos)
+ (calculate-vehicle-position (+ 1 (random road-num-lanes))))
(define (make-vehicle-list vehicle-list tile-ref)
(if (< tile-ref (texture-atlas-size vehicles-sprites))
(cons (make-inactive-vehicle (* 2 tile-ref)
- (texture-atlas-ref vehicles-sprites tile-ref))
+ (texture-atlas-ref vehicles-sprites tile-ref)
+ (random-lane-start-pos))
(cons (make-inactive-vehicle (+ 1 (* 2 tile-ref))
- (texture-atlas-ref vehicles-sprites tile-ref))
+ (texture-atlas-ref vehicles-sprites tile-ref)
+ (random-lane-start-pos))
(make-vehicle-list vehicle-list (+ tile-ref 1))))
vehicle-list))
@@ -74,13 +61,6 @@
(define game-over #f)
-(define (vehicle-safety-distance? vehicle1 vehicle2)
- (let ((vehicle1-x (vec2-x (vehicle-position vehicle1)))
- (vehicle2-x (vec2-x (vehicle-position vehicle2))))
- (> vehicle2-x
- (+ (* 2 vehicle-length)
- vehicle1-x))))
-
(define (vehicle-has-spawn-space? vehicle)
(let loop ((vehicles vehicles))
(let ((other-vehicle (car vehicles))
@@ -149,9 +129,6 @@
(off-road-player-top)
(off-road-player-bottom)))
-(define (vehicle-hitbox vehicle-pos)
- (rect (vec2-x vehicle-pos) (vec2-y vehicle-pos) vehicle-length vehicle-height))
-
(define (player-collides?)
(let ((player-hitbox (vehicle-hitbox player-position)))
(let loop ((vehicles vehicles))
@@ -236,17 +213,17 @@
(define (key-press key modifiers repeat?)
- (if (eq? key 'w)
- (set! player-velocity (vec2 0 vehicle-steering-speed)))
- (if (eq? key 's)
- (set! player-velocity (vec2 0 (* vehicle-steering-speed -1))))
- (if (eq? key 'a)
- (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))
- )
+ (cond
+ ((eq? key 'w)
+ (set! player-velocity (vec2 0 vehicle-steering-speed)))
+ ((eq? key 's)
+ (set! player-velocity (vec2 0 (* vehicle-steering-speed -1))))
+ ((eq? key 'a)
+ (set! player-speed (max (- player-speed 1) player-min-speed)))
+ ((eq? key 'd)
+ (set! player-speed (min (+ player-speed 1) player-max-speed)))
+ ((eq? key 'escape)
+ (abort-game))))
(define (key-release key modifiers)
(if (or (eq? key 'w) (eq? key 's))