blob: 47f92653629f991d5169f0836614144bd09d3492 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
(use-modules (chickadee graphics sprite)
(chickadee)
(chickadee graphics viewport)
(ice-9 pretty-print)
(ice-9 format))
;;;; Constants and variables
(define lane-height 65)
(define lane-length 192)
(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-top (texture-atlas-ref road 2))
(define road-bottom (texture-atlas-ref road 0))
(define road-lane (texture-atlas-ref road 1))
(define vehicle-height 45)
(define vehicle-length 100)
(define vehicle-steering-speed 4.0)
(define vehicles (load-tileset "vehicles.png" vehicle-length vehicle-height))
(define player-car (texture-atlas-ref vehicles 0))
(define player-velocity (vec2 0 0))
(define player-min-speed 4)
(define player-max-speed 20)
(define player-speed player-min-speed)
(define load-complete #f)
;;;; Game functions
(define (draw-lanes x y num-lanes)
(if (> num-lanes 0)
(begin
(draw-sprite road-lane (vec2 x y))
(draw-lanes x (+ lane-height y) (- num-lanes 1)))))
(define (draw-road-section startx starty num-lanes)
(draw-sprite road-bottom (vec2 startx starty))
(draw-lanes startx (+ lane-height starty) (- num-lanes 2))
(draw-sprite road-top (vec2 startx (+ starty (* lane-height (- num-lanes 1))))))
(define (draw-grass-down x y)
(draw-sprite grass (vec2 x (- y grass-height))))
(define (draw-grass-up x y)
(draw-sprite grass (vec2 x y)))
(define (draw-road startx starty num-lanes)
(if (< startx (window-width (current-window)))
(begin
(draw-grass-down startx starty)
(draw-road-section startx starty num-lanes)
(draw-road (+ startx lane-length) starty num-lanes)
(draw-grass-up startx (+ starty (* lane-height num-lanes))))))
(define (lane-y num-lane)
(+ road-start-y
(* lane-height (- num-lane 1))))
(define player-position
(vec2 (/ (- (window-width (current-window)) vehicle-length) 4)
(+ (lane-y 3)
(/ (- lane-height vehicle-height) 2))))
;;;; 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)))
(set! player-position (vec2+ player-position player-velocity)))
(define (draw alpha)
(draw-road road-section-position road-start-y 5)
(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))
(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)))
)
(define (key-release key modifiers)
(if (or (eq? key 'w) (eq? key 's))
(set! player-velocity (vec2 0 0))))
|