LightTable과 Quil을 간략하게 소개하고 손쉽게 크리스마스 트리를 작성합니다.
11905 단어 Clojure
LightTable과 Quil이 꽤 좋다고 느끼기 때문에, 그래서 간단하게 소개하고, 크리스마스 트리에서도 쓸까요, 라고 써 보았습니다.
LightTable과 Quil
글쎄, 우선 LightTable이지만 Clojure로 작성된 편집기입니다. Clojure로 작성된 편집기로서 실시간으로 프로그램을 평가하고 실제로 값을 보면서 소스를 편집할 수 있습니다. 설정등도 Clojure로 쓰여져 있고, 나는 Clojure를 쓰면, 이 에디터를 적극적으로 이용하고 있습니다. (Emacs도 사용하지만)
Quil은 Processing의 API를 이용하는 그래픽 라이브러리이며 Creative Coding에서의 이용 등 아트계의 프로그래밍을 할 때 잘 쓰이는 라이브러리입니다.
환경 구축
leiningen으로 쉽게 프로젝트를 만들 수 있습니다.
lein new quil advent-calendar-2015
lightTable에서 평가하면서 Quil을 씁니다.
이제 quil 프로젝트를 만든 후 LightTable을 시작하고 File -> Open Folder에서 이번에 만든 프로젝트의 폴더를 엽니 다.
그리고 Workspace가 표시되지 않으면 View -> Workspace에서 Workspace를 표시합시다. Workspace에서 core.clj를 선택하고 LightTable에서 core.clj를 열어 봅시다. 다음 상태가 되어야 합니다.
그 상태에서 OSX의 경우 Command + Shift + Return을 누르십시오. 그러면 core.clj의 소스 전체가 quil의 윈도우가 열리고, 또한 S 표현식의 평가 된 값의 반환 값, 편집기쪽에 표시되어야합니다.
도중 어쩐지 (+ 1 2)도 썼습니다. 훌륭합니다.
글쎄, 코드를 약간 바꿔 봅시다. 여기서 draw-state의 배경을 다시 씁니다. 그리고 다시 작성한 부분에 커서가 있는지 확인하면서 Command + Return을 해봅시다. 그러면 quil이 재부팅되지 않고 quil window 화면이 변경되고 있음을 확인할 수 있다고 생각합니다. 런타임에 코드가 변경되었습니다.
이런 느낌으로 Command+Return이나 Command+Shift+Return을 누르면서 런타임에 코드를 바꾸면서 Quil을 즐기세요.
크리스마스 트리를 작성합니다.
자, 크리스마스 트리를 제대로 썼습니다.
(ns advent-calendar-2015.core
(:require [quil.core :refer :all]
[quil.middleware :as m]))
(def w 700)
(def h 700)
(defn setup []
; Set frame rate to 30 frames per second.
(frame-rate 2)
{:frames 0})
(defn update-state [state]
; Update sketch state by changing circle color and position.
{:frames (+ (:frames state) 1)})
(defn draw-state [state]
(background 70)
(no-stroke)
(loop [y 0]
(when (<= y h)
(loop [x 0]
(when (<= x w)
(fill 20 400 200)
(if (< (abs (- x (/ w 2))) (- (* y 0.4) 25))
(if (or (< y (- h 80)) (< (abs (- x (/ w 2))) 50))
(let [size (* (rand) 7)]
(ellipse x y size size))
(ellipse x y 1 1)
)
(ellipse x y 1 1))
(recur (+ x 5))))
(recur (+ y 5)))))
(defsketch advent-calendar-2015
:title "You spin my circle right round"
:size [w h]
; setup function called only once, during sketch initialization.
:setup setup
; update-state is called on each iteration before draw-state.
:update update-state
:draw draw-state
:features [:keep-on-top]
; This sketch uses functional-mode middleware.
; Check quil wiki for more info about middlewares and particularly
; fun-mode.
:middleware [m/fun-mode])
이런 식으로 나타납니다. (꼭 별을 써보세요)
메리 크리스마스 !!!
Reference
이 문제에 관하여(LightTable과 Quil을 간략하게 소개하고 손쉽게 크리스마스 트리를 작성합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nobkz/items/7a20a2b48bf6af9e8c53
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
leiningen으로 쉽게 프로젝트를 만들 수 있습니다.
lein new quil advent-calendar-2015
lightTable에서 평가하면서 Quil을 씁니다.
이제 quil 프로젝트를 만든 후 LightTable을 시작하고 File -> Open Folder에서 이번에 만든 프로젝트의 폴더를 엽니 다.
그리고 Workspace가 표시되지 않으면 View -> Workspace에서 Workspace를 표시합시다. Workspace에서 core.clj를 선택하고 LightTable에서 core.clj를 열어 봅시다. 다음 상태가 되어야 합니다.
그 상태에서 OSX의 경우 Command + Shift + Return을 누르십시오. 그러면 core.clj의 소스 전체가 quil의 윈도우가 열리고, 또한 S 표현식의 평가 된 값의 반환 값, 편집기쪽에 표시되어야합니다.
도중 어쩐지 (+ 1 2)도 썼습니다. 훌륭합니다.
글쎄, 코드를 약간 바꿔 봅시다. 여기서 draw-state의 배경을 다시 씁니다. 그리고 다시 작성한 부분에 커서가 있는지 확인하면서 Command + Return을 해봅시다. 그러면 quil이 재부팅되지 않고 quil window 화면이 변경되고 있음을 확인할 수 있다고 생각합니다. 런타임에 코드가 변경되었습니다.
이런 느낌으로 Command+Return이나 Command+Shift+Return을 누르면서 런타임에 코드를 바꾸면서 Quil을 즐기세요.
크리스마스 트리를 작성합니다.
자, 크리스마스 트리를 제대로 썼습니다.
(ns advent-calendar-2015.core
(:require [quil.core :refer :all]
[quil.middleware :as m]))
(def w 700)
(def h 700)
(defn setup []
; Set frame rate to 30 frames per second.
(frame-rate 2)
{:frames 0})
(defn update-state [state]
; Update sketch state by changing circle color and position.
{:frames (+ (:frames state) 1)})
(defn draw-state [state]
(background 70)
(no-stroke)
(loop [y 0]
(when (<= y h)
(loop [x 0]
(when (<= x w)
(fill 20 400 200)
(if (< (abs (- x (/ w 2))) (- (* y 0.4) 25))
(if (or (< y (- h 80)) (< (abs (- x (/ w 2))) 50))
(let [size (* (rand) 7)]
(ellipse x y size size))
(ellipse x y 1 1)
)
(ellipse x y 1 1))
(recur (+ x 5))))
(recur (+ y 5)))))
(defsketch advent-calendar-2015
:title "You spin my circle right round"
:size [w h]
; setup function called only once, during sketch initialization.
:setup setup
; update-state is called on each iteration before draw-state.
:update update-state
:draw draw-state
:features [:keep-on-top]
; This sketch uses functional-mode middleware.
; Check quil wiki for more info about middlewares and particularly
; fun-mode.
:middleware [m/fun-mode])
이런 식으로 나타납니다. (꼭 별을 써보세요)
메리 크리스마스 !!!
Reference
이 문제에 관하여(LightTable과 Quil을 간략하게 소개하고 손쉽게 크리스마스 트리를 작성합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nobkz/items/7a20a2b48bf6af9e8c53
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
자, 크리스마스 트리를 제대로 썼습니다.
(ns advent-calendar-2015.core
(:require [quil.core :refer :all]
[quil.middleware :as m]))
(def w 700)
(def h 700)
(defn setup []
; Set frame rate to 30 frames per second.
(frame-rate 2)
{:frames 0})
(defn update-state [state]
; Update sketch state by changing circle color and position.
{:frames (+ (:frames state) 1)})
(defn draw-state [state]
(background 70)
(no-stroke)
(loop [y 0]
(when (<= y h)
(loop [x 0]
(when (<= x w)
(fill 20 400 200)
(if (< (abs (- x (/ w 2))) (- (* y 0.4) 25))
(if (or (< y (- h 80)) (< (abs (- x (/ w 2))) 50))
(let [size (* (rand) 7)]
(ellipse x y size size))
(ellipse x y 1 1)
)
(ellipse x y 1 1))
(recur (+ x 5))))
(recur (+ y 5)))))
(defsketch advent-calendar-2015
:title "You spin my circle right round"
:size [w h]
; setup function called only once, during sketch initialization.
:setup setup
; update-state is called on each iteration before draw-state.
:update update-state
:draw draw-state
:features [:keep-on-top]
; This sketch uses functional-mode middleware.
; Check quil wiki for more info about middlewares and particularly
; fun-mode.
:middleware [m/fun-mode])
이런 식으로 나타납니다. (꼭 별을 써보세요)
메리 크리스마스 !!!
Reference
이 문제에 관하여(LightTable과 Quil을 간략하게 소개하고 손쉽게 크리스마스 트리를 작성합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nobkz/items/7a20a2b48bf6af9e8c53텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)