5.2.5 Yksinkertainen esimerkki

Yksikertaisessa interaktiivisessa ufoanimaatiossa, ufon tilaa mallinnetaan kokonaisluvulla, joka kuvaa ufon sijaintia y-akselin suunnassa. Lähtötila on 0, jolloin ufo sijoitetaan kuvan yläreunaan (origo on ruudun vasemmassa yläreunassa ja y-akseli kasvaa alaspäin). Jokaisella kellon tikityksellä ufon y-koordinaatti kasvaa ja ufo laskeutuu alaspäin. Esimerkissä ufo hyppää ylöspäin kun painetaan nuoli-ylös-näppäintä. Animaatio päättyy kun ufo on maassa.

(require 2htdp/image)
(require 2htdp/universe)
 
(define KORKEUS 500)
(define LEVEYS 300)
(define TAUSTA (empty-scene LEVEYS KORKEUS))
(define UFO (overlay/xy (ellipse 120 40 "solid" "violet")
                        30 -25
                        (circle 30 "outline" "black")))
 
(define (piirrä-kuva y)
  (place-image UFO 150 y TAUSTA))
 
(define (siirrä y)
  (+ y 5))
 
(define (hoida-näppäin y näppäin)
  (cond [(key=? näppäin "up")
         (- y 50)]
        [else
         y]))
 
(define (valmis? y)
  (> y (- KORKEUS 40)))
 
(big-bang 0
          (to-draw piirrä-kuva)
          (on-tick siirrä)
          (on-key hoida-näppäin)
          (stop-when valmis?))