Skip to content

Commit

Permalink
Got a basic coloured ball program working
Browse files Browse the repository at this point in the history
  • Loading branch information
Robert Rees committed Apr 4, 2011
0 parents commit f265bbd
Show file tree
Hide file tree
Showing 7 changed files with 786 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.cake
pom.xml
*.jar
*.war
lib
classes
build
/Coloured-Balls
674 changes: 674 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions project.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
(defproject coloured-balls "0.0.1-SNAPSHOT"
:description "A visual game challenge for the Clojure dojo"
:dependencies [[org.clojure/clojure "1.2.0"]
[midje "1.1-alpha-3"]
[org.clojars.automata/rosado.processing "1.1.0"]])
3 changes: 3 additions & 0 deletions readme.textile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
h1. Coloured Balls

This is an example exercise in visual programming for the London Clojure dojo.
36 changes: 36 additions & 0 deletions src/coloured_balls/core.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
(ns coloured-balls.core
(:use [rosado.processing]
[rosado.processing.applet]))

;; here's a function which will be called by Processing's (PApplet)
;; draw method every frame. Place your code here. If you eval it
;; interactively, you can redefine it while the applet is running and
;; see effects immediately

(defn draw-ball [ball]
(fill (:red ball) (:green ball) (:blue ball))
(ellipse (:x ball) (:y ball) (:radius ball) (:radius ball)))

(defn make-ball []
{:x (rand-int 400) :y (rand-int 400) :red (rand-int 256) :blue (rand-int 256) :green (rand-int 256) :radius (+ 1 (rand-int 70))})

(defn draw
"Example usage of with-translation and with-rotation."
[]
(draw-ball (make-ball))
)

(defn setup []
"Runs once."
(smooth)
(no-stroke)
(fill 226)
(framerate 10))

;; Now we just need to define an applet:

(defapplet balls :title "Coloured balls"
:setup setup :draw draw :size [400 400])

(run balls)

57 changes: 57 additions & 0 deletions tasks.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
(use 'cake 'cake.core
'[cake.project :only [reload!]]
'[bake.find-namespaces :only [find-namespaces-in-dir]])
(import '[java.io File])

(deftask midje
"Run midje and clojure.test tests"
(bake (:use [bake.core :only [with-context]])
(:require [clojure test string])
[namespaces (concat (find-namespaces-in-dir (java.io.File. "test"))
(find-namespaces-in-dir (java.io.File. "src")))]
(with-context :test
;; This turns off "Testing ...." lines, which I hate, especially
;; when there's no failure output.
(defmethod clojure.test/report :begin-test-ns [m])

(alter-var-root (var clojure.test/*report-counters*)
(fn [_] (ref clojure.test/*initial-report-counters*)))
(doseq [n namespaces] (require n :reload))


(let [midje-passes (:pass @clojure.test/*report-counters*)
midje-fails (:fail @clojure.test/*report-counters*)
midje-failure-message
(condp = midje-fails
0 (format "All claimed facts (%d) have been confirmed." midje-passes)
1 (format "FAILURE: %d fact was not confirmed." midje-fails)
(format "FAILURE: %d facts were not confirmed." midje-fails))
potential-consolation
(condp = midje-passes
0 ""
1 "(But 1 was.)"
(format "(But %d were.)" midje-passes))
midje-consolation
(if (> midje-fails 0) potential-consolation "")

; Stashed clojure.test output
clojure-test-output-catcher
(java.io.StringWriter.)
clojure-test-result
(binding [clojure.test/*test-out* clojure-test-output-catcher]
(apply clojure.test/run-tests namespaces))
clojure-test-output
(-> clojure-test-output-catcher .toString clojure.string/split-lines)]


(when (> (+ (:fail clojure-test-result) (:error clojure-test-result))
0)
(println ">>> Output from clojure.test tests:")
(dorun (map println (drop-last 2 clojure-test-output))))

(when (> (:test clojure-test-result) 0)
(println ">>> clojure.test summary:")
(dorun (map println (take-last 2 clojure-test-output)))
(println ">>> Midje summary:"))

(println midje-failure-message midje-consolation)))))
3 changes: 3 additions & 0 deletions test/coloured_balls/core_test.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
(ns coloured-balls.core-test
(:use coloured-balls.core)
(:use ))

0 comments on commit f265bbd

Please sign in to comment.