1 (set-game-properties! #:title "Gacela Asteroids")
3 (define max-x (/ (cdr (assoc 'width (get-game-properties))) 2))
4 (define min-x (- max-x))
5 (define max-y (/ (cdr (assoc 'height (get-game-properties))) 2))
6 (define min-y (- max-y))
9 (let ((asteroid (load-texture "Asteroid.png")))
12 (translate (car a) (cadr a))
13 (draw-texture asteroid))))
15 (define (move-asteroid a)
16 (let* ((x (car a)) (y (cadr a))
17 (vx (caddr a)) (vy (cadddr a))
18 (nx (+ x vx)) (ny (+ y vy)))
19 (cond ((> nx max-x) (set! vx -1))
20 ((< nx min-x) (set! vx 1)))
21 (cond ((> ny max-y) (set! vy -1))
22 ((< ny min-y) (set! vy 1)))
23 (list (+ x vx) (+ y vy) vx vy)))
26 (let ((ship1 (load-texture "Ship1.png"))
27 (ship2 (load-texture "Ship2.png")))
30 (translate (car s) (cadr s))
32 (draw-texture ship1))))
35 (let ((x (car s)) (y (cadr s))
37 (vx (cadddr s)) (vy (cadddr (cdr s))))
38 (cond ((key? 'left) (set! angle (+ angle 5)))
39 ((key? 'right) (set! angle (- angle 5))))
40 (cond ((key? 'up) (set! y (+ y 3))))
41 (list x y angle vx vy)))
43 (let ((asteroids '((100 100 1 1) (-100 -100 -1 1)))
46 (set! asteroids (map move-asteroid asteroids))
47 (set! ship (move-ship ship))
48 (for-each draw-asteroid asteroids)