On http://clojure.org/getting_started:


Download <http://clojure.org/downloads> and unzip Clojure. In the directory
in which you expanded clojure.zip, run:

java -cp clojure-1.4.0.jar clojure.main

Should be just:


java -jar clojure-1.4.0.jar


It's a detail, but an important one, as it's the first contact for most of
the new Clojure users.

Denis

On Mon, Sep 3, 2012 at 9:00 AM, Denis Labaye <denis.lab...@gmail.com> wrote:

>
>    1. java -cp ./org/clojure/clojure/1.4.0/clojure-1.4.0.jar clojure.main
>    2. cut & paste your code in the REPL
>    3. type (start) [enter]
>
>
>
>
> On Fri, Aug 31, 2012 at 3:36 AM, gearss <gearss8...@gmail.com> wrote:
>
>> I have a file named pong.clj, it isunder following, I want to know how
>> can I run it?
>> Thank you.
>>
>> --------
>> (ns example.game.pong
>>   (:use [penumbra opengl]
>>         [clojure.contrib.def])
>>   (:require [penumbra [app :as app] [text :as text]]))
>> (def ball-width 0.03)
>> (def ball-height 0.03)
>> (def paddle-width 0.02)
>> (def paddle-height 0.15)
>> ;;;
>> (defn abs [x] (Math/abs x))
>> (defn intersect-1d [[a b] [x y]]
>>   (and (<= a y) (>= b x)))
>> (defn intersect-2d [[a b c d] [x y z w]]
>>   (and (intersect-1d [a c] [x z])
>>        (intersect-1d [b d] [y w])))
>> (defn reflector [[x y w h] f]
>>   (let [r [x y (+ x w) (+ y h)]]
>>     (fn [region velocity]
>>       (if (intersect-2d region r)
>>         (f velocity)
>>         velocity))))
>> (defvar boundaries
>>   [(reflector [0 -1 1 1] (fn [[x y]] [x (abs y)]))
>>    (reflector [0 1 1 1] (fn [[x y]] [x (- (abs y))]))
>>    (reflector [-1 0 1 1] (fn [[x y]] [(abs x) y]))
>>    (reflector [1 0 1 1] (fn [[x y]] [(- (abs x)) y]))])
>> (defn update-ball [state dt]
>>   (let [ball (concat (:p state) (map + (:p state) [ball-width
>> ball-height]))
>>         v (reduce
>>            #(%2 ball %1) (:v state)
>>            (conj
>>             boundaries
>>             (reflector [0.01 (:left state) paddle-width paddle-height]
>>                        (fn [[x y]] [(abs x) y]))
>>             (reflector [(- 0.99 paddle-width) (:right state) paddle-width
>> paddle-height]
>>                        (fn [[x y]] [(- (abs x)) y]))))]
>>     (assoc state
>>       :v v
>>       :p (map + (:p state) (map (partial * dt) v)))))
>> (defn draw-ball [pos]
>>   (push-matrix
>>    (apply translate pos)
>>    (draw-quads
>>     (vertex 0 0)
>>     (vertex ball-width 0)
>>     (vertex ball-width ball-height)
>>     (vertex 0 ball-height))))
>> ;;;
>> (defn update-opponent-paddle [state]
>>   (let [[x y] (:p state)
>>         [vx vy] (:v state)
>>         dt (/ (- 1 x) vx)
>>         dy (- (+ y (* vy dt)) (:right state))]
>>     (assoc state
>>       :v-right (if (neg? vx) 0 (/ dy dt)))))
>> (defn update-player-paddle [state]
>>   (assoc state
>>     :v-left
>>     (cond
>>      (app/key-pressed? :up) -1
>>      (app/key-pressed? :down) 1
>>      :else 0)))
>> (defn update-paddle [dt v pos]
>>   (min (- 1 paddle-height) (max 0 (+ pos (* dt v)))))
>> (defn draw-paddle [x y]
>>   (push-matrix
>>    (translate x y)
>>    (draw-quads
>>     (vertex 0 0)
>>     (vertex paddle-width 0)
>>     (vertex paddle-width paddle-height)
>>     (vertex 0 paddle-height))))
>> ;;;
>> (defn reset-game [state]
>>   (assoc state
>>     :v [0.4 0.8]
>>     :p [0.5 0.5]
>>     :left 0.5, :v-left 0.0
>>     :right 0.5, :v-right 0.0))
>> (defn init [state]
>>   (app/vsync! true)
>>   (app/title! "Pong")
>>   (app/periodic-update! 2 update-opponent-paddle)
>>   (reset-game state))
>> (defn reshape [[x y w h] state]
>>   (ortho-view 0 1 1 0 -1 1)
>>   state)
>> (defn update [[delta _] state]
>>   (-> state
>>       (update-player-paddle)
>>       (assoc :left (update-paddle delta (:v-left state) (:left state)))
>>       (assoc :right (update-paddle delta (:v-right state) (:right state)))
>>       (update-ball delta)))
>> (defn display [[delta _] state]
>>   (draw-ball (:p state))
>>   (draw-paddle 0.01 (:left state))
>>   (draw-paddle (- 0.99 paddle-width) (:right state))
>>   (app/repaint!))
>> (defn start []
>>   (app/start
>>    {:display display, :reshape reshape, :update update, :init init}
>>    {}))
>>
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to