46 lines
1.1 KiB
Fennel
46 lines
1.1 KiB
Fennel
(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
|
|
}
|