+1 for Daniels suggestion.
Swing can be quite bothersome if you just want a canvas and key-events.

I would avoid multimethods:

(defn calc-new-pos [xy prev-pos dir]
  (condp = [xy dir]
    [:x :right] (+ prev-pos step)
    [:x :left]) (- prev-pos step)
    [:y :down] (+ prev-pos step)
    [:y :up] (- prev-pos step)
    :default prev-pos)

But really I think you should see the current 'velocity' as 2d vector eg:
[x y] [step 0] [0 -step]
Both speed and direction integrated.
so:

(defn calc-new-pos [pos vel]
  (map + pos vel))

I would avoid multimethods:

(defn inside-window? [dir canvas [x y]]
  (condp = dir
    :left (>= x (.getX canvas))
    :right (<= x (+ (.getX canvas) (.getWidth canvas)))
    :up (>= y (.getY canvas))
    :down (<= y (+ (.getY canvas) (.getHeight canvas)))))

inside-window? depends on information from the actual window, I would
decouple the game-state from swing.
Remember: functional is good :)

alternative:
(defn inside-window? [[x y]]
  (and
   (< -1 x max-x)
   (< -1 y max-y)))

Also look up the 'doto' macro.

And I should go read up on what core.async does, I have ignored it for too
long.


On Sun, Aug 4, 2013 at 5:56 PM, Daniel <doubleagen...@gmail.com> wrote:

> Or quil, a processing wrapper, would be well suited to this application.
>
> --
> --
> 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 unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to