I wanted to say compared to emacs+slime+clojure-swank, of course. There are also netbeans and jetbrain Ideas implementations, also. I just posted here because you told about eclipse, but those other environments are good, too !
-- Laurent 2009/2/9 Laurent PETIT <laurent.pe...@gmail.com> > Since you say you're an Eclipse user, one answer could be : use clojuredev > (eclipse plugin supporting clojure development), > > and wait patiently for this feature to be included :-). > > More seriously : clojuredev, while still a baby compared to slime, has some > interesting features worth considering for current eclipse users : > - syntax coloring + rainbow parens > - namespace browser > - REPL launcher > - auto-compilation of files + problem markers (for compilation errors) > - "survival kit" of keyboard shortcuts in the editor : top-level > s-expression selection, send to REPL (current selection or top-level > s-expression), compile file, ... > > Code completion and integration with the JDT are next on my todo list. It > would be based on heuristics in a first time (deduction of the namespace of > a symbol by simple/naive detection of the ns of the file), but would work > 95% (if not better) of the time, and then, when time permits, based on real > static analysis+dynamic analysis of code. > > By integration with the JDT, the automatic addition of imports is indeed a > really interesting feature I would like to add (I intend to first use a lot > clojure for replacing bits of java in existing java projects, so our needs > will match in this area :-). > > Cheers, > > -- > Laurent > > > 2009/2/9 phtrivier <phtriv...@gmail.com> > > >> Hi everyone >> >> first of all, this is my first post, so if I ask FAQs or deserve to >> RTFM, please tell me. >> >> I am learning clojure, and trying to adapt some game code written in a >> Java framework called Slick. After a couple of beginner's mistake (the >> kind you do to learn ;) ), I got a working convestion of a Scoller >> example. Still, there are some things that I don't find very elegant, >> or where I'm pretty sure to be reinventing some wheel. >> >> Code is here : >> >> http://tinyurl.com/dj4l9z >> or >> git://github.com/phtrivier/clj-slick-tank.git >> >> * The game is tile-based. I need to build up a collision map ("can the >> tank walk on cell [3,2] ?"). Java does it with a two-dimensional array >> of booleans. From discussion here : >> >> http://groups.google.com/group/clojure/browse_thread/thread/5eb78c620eac19ea/b4d75ac4644c06a9?lnk=gst&q=two+dimensional+vector#b4d75ac4644c06a9 >> , I choosed to use a vector of vector (i probably should'nt have, but >> that's another point). I wrote this : >> >> (defn blocked? >> "Is a position blocked in the screen?" >> [screen x y] >> (let [i (int x) >> j (int y)] >> (true? (get (get (screen :blocked) i) j)))) >> >> (defn make-row-generator >> [cell-generator w] >> (fn [i] >> (vec (map (fn [j] (cell-generator i j)) >> (range 0 w))))) >> >> (defn make-matrix >> [w h cell-generator] >> (vec (map (make-row-generator cell-generator w) >> (range 0 h)))) >> >> (defn make-collision-map >> "Builds a double dimensioned array telling >> whether a cell is blocked" >> [m w h] >> (make-matrix >> w h >> (fn [i j] >> (let [tileId (.getTileId m i j 0)] >> (let [res >> (Boolean/parseBoolean >> (.getTileProperty m tileId "blocked" "false"))] >> res >> ))))) >> >> (the 'm' is a slick-specific stucture that holds the tile map). >> Am I duplicating some existing library to build matrices ? Is there a >> cleaner way to do it ? >> >> * In a method I check for collisions : >> >> ;; Movement >> (defn try-move >> "Try and move a player in the screen given a direction. >> Returns a list with the moved player, and a >> boolean indicating whether the move was successfull. >> " >> [player screen dx dy] >> (let [new_x (+ (player :x) dx) >> new_y (+ (player :y) dy)] >> >> (let [bxy (blocked? screen new_x new_y) >> bx (blocked? screen new_x (player :y)) >> by (blocked? screen (player :x) new_y)] >> (if bxy >> (if bx >> (if by >> [player, false] >> [(assoc player :y new_y), true]) >> [(assoc player :x new_x), true]) >> [(assoc player :x new_x :y new_y), true])))) >> >> Will i get used to the nested 'if' blocks someday ? Any way to write >> the equivalent of a switch case here, if only to improve >> readibility ? >> >> * Finally, my code starts with a rather ugly >> >> (ns tank >> (:import (org.newdawn.slick Animation >> AppGameContainer >> BasicGame >> GameContainer >> Graphics >> Input >> SlickException >> SpriteSheet) >> (org.newdawn.slick.tiled TiledMap) >> (org.newdawn.slick.util Log))) >> >> I know there is no way to import org.newdawn.slick.* (as discussed >> here : >> >> http://groups.google.com/group/clojure/browse_thread/thread/fa00a0ff4c264f9a/bcde2b6a4742fe6b?lnk=gst&q=import+all+classes+from+package#bcde2b6a4742fe6b >> ). What do you do in programs that need huge list of imports ? I'm >> kinda spoiled by the Eclipse way of doing this, which is roughly : >> import everything, forget about it, and let you IDE clear up the list. >> And at least for development part it make things easier. If I hadn't >> had the exact list of import to copy paste in this case, I would >> probably have gone bored and depressed by the second class to import >> manually (lazyness is not only for evaluation ;) ) >> >> Thanks for any ideas, sorry if post is too long / newbie-like. >> >> Cheers >> PH >> >> >> >> --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---