(require :L5) (var yellow nil) ; #ffe470 (var dark nil) ; #403830 (fn setup [] (size 640 480) (textSize 100) (set yellow (color 255 228 112)) (set dark (color 64 56 48))) (local steps (* 24 60)) (var step 0) (lambda lpad [num] (if (< num 10) (.. "0" num) num)) (lambda time [num] (let [hour (floor (map num 0 steps 0 24)) min (- num (* hour 60))] (.. (lpad hour) ":" (lpad min)))) (var pause false) (var won false) (fn key-pressed [] (when (= key "space") (set pause (not pause)))) (local goal-time (floor (random 0 steps))) (fn draw [] (when (and (not won) (not pause)) (set step (+ step 1))) (when (>= step steps) (set step 0)) (let [ half (/ steps 2) color-step (if (> step half) (- half (- step half)) step) current-color (lerpColor dark yellow (map color-step 0 half 0 1))] (background current-color)) (text (time step) 175 150) (text (time goal-time) 175 250) (when (and pause (= goal-time step)) (set won true)) (when won (text "YOU WIN" 100 400))) { :s setup :d draw :k key-pressed }