proof of concept: add quil to ludus
This commit is contained in:
parent
1c2ab5182e
commit
55d76f6854
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -19,4 +19,4 @@ pom.xml.asc
|
|||
**/.DS_Store
|
||||
/sandbox
|
||||
ludus.sublime-workspace
|
||||
ludus
|
||||
/ludus
|
|
@ -4,7 +4,8 @@
|
|||
:license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
|
||||
:url "https://www.eclipse.org/legal/epl-2.0/"}
|
||||
:dependencies [[org.clojure/clojure "1.11.1"]
|
||||
[babashka/fs "0.1.6"]]
|
||||
[babashka/fs "0.1.6"]
|
||||
[quil "4.0.0-SNAPSHOT-1"]]
|
||||
:plugins [[lein-cljfmt "0.8.0"]]
|
||||
:repl-options {:init-ns ludus.core}
|
||||
:main ludus.core
|
||||
|
|
32
src/ludus/draw.clj
Normal file
32
src/ludus/draw.clj
Normal file
|
@ -0,0 +1,32 @@
|
|||
(ns ludus.draw
|
||||
(:require [quil.core :as q]
|
||||
[quil.middleware :as m]))
|
||||
|
||||
(defn setup []
|
||||
(q/frame-rate 60)
|
||||
(q/color-mode :hsb)
|
||||
{:color 0 :angle 0})
|
||||
|
||||
(defn update-state [state]
|
||||
{:color (mod (+ (:color state) 0.7) 255)
|
||||
:angle (+ (:angle state) 0.1)})
|
||||
|
||||
(defn draw-state [state]
|
||||
(q/background 240)
|
||||
(q/fill (:color state) 255 255)
|
||||
(let [angle (:angle state)
|
||||
x (* 150 (q/cos angle))
|
||||
y (* 150 (q/sin angle))]
|
||||
(q/with-translation [(/ (q/width) 2)
|
||||
(/ (q/height) 2)]
|
||||
(q/ellipse x y 100 100))))
|
||||
|
||||
(defn ludus-draw []
|
||||
(q/defsketch sketch
|
||||
:title "Hello Ludus"
|
||||
:size [500 500]
|
||||
:setup setup
|
||||
:update update-state
|
||||
:draw draw-state
|
||||
:features []
|
||||
:middleware [m/fun-mode]))
|
|
@ -1,7 +1,8 @@
|
|||
(ns ludus.prelude
|
||||
(:require
|
||||
[ludus.data :as data]
|
||||
[ludus.show :as show]))
|
||||
[ludus.show :as show]
|
||||
[ludus.draw :as draw]))
|
||||
|
||||
;; TODO: make eq, and, or special forms that short-circuit
|
||||
;; Right now, they evaluate all their args
|
||||
|
@ -83,16 +84,20 @@
|
|||
:body (fn [ms] (Thread/sleep ms))})
|
||||
|
||||
(def conj- {:name "conj"
|
||||
::data/type ::data/clj
|
||||
:body conj})
|
||||
::data/type ::data/clj
|
||||
:body conj})
|
||||
|
||||
(def assoc- {:name "assoc"
|
||||
::data/type ::data/clj
|
||||
:body assoc})
|
||||
::data/type ::data/clj
|
||||
:body assoc})
|
||||
|
||||
(def get- {:name "get"
|
||||
::data/type ::data/clj
|
||||
:body get})
|
||||
::data/type ::data/clj
|
||||
:body get})
|
||||
|
||||
(def draw {:name "draw"
|
||||
::data/type ::data/clj
|
||||
:body draw/ludus-draw})
|
||||
|
||||
(def prelude {"eq" eq
|
||||
"add" add
|
||||
|
@ -112,4 +117,5 @@
|
|||
"assoc" assoc-
|
||||
"conj" conj-
|
||||
"get" get-
|
||||
})
|
||||
"draw" draw
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue
Block a user