# HG changeset patch # User Steve Losh # Date 1341752961 14400 # Node ID ad823b5ba9cd9f4c1bacdb1b684b14482ba1917a # Parent 17efffc997c6790e2c4d143d26b8f8102700ae92 fix typo diff -r 17efffc997c6 -r ad823b5ba9cd src/caves/core.clj --- a/src/caves/core.clj Sun Jul 08 07:31:45 2012 -0400 +++ b/src/caves/core.clj Sun Jul 08 09:09:21 2012 -0400 @@ -14,6 +14,30 @@ (s/put-string screen 0 row blank)))) +; Drawing --------------------------------------------------------------------- +(defmulti draw-ui + (fn [ui game screen] + (:kind ui))) + +(defmethod draw-ui :start [ui game screen] + (s/put-string screen 0 0 "Welcome to the Caves of Clojure!") + (s/put-string screen 0 1 "Press enter to win, anything else to lose.")) + +(defmethod draw-ui :win [ui game screen] + (s/put-string screen 0 0 "Congratulations, you win!") + (s/put-string screen 0 1 "Press escape to exit, anything else to restart.")) + +(defmethod draw-ui :lose [ui game screen] + (s/put-string screen 0 0 "Sorry, better luck next time.") + (s/put-string screen 0 1 "Press escape to exit, anything else to restart.")) + +(defn draw-game [game screen] + (clear-screen screen) + (doseq [ui (:uis game)] + (draw-ui ui game screen)) + (s/redraw screen)) + + ; Input ----------------------------------------------------------------------- (defmulti process-input (fn [game input] @@ -38,30 +62,6 @@ (assoc game :input (s/get-key-blocking screen))) -; Drawing --------------------------------------------------------------------- -(defmulti draw-ui - (fn [ui game screen] - (:kind ui))) - -(defmethod draw-ui :start [ui game screen] - (s/put-string screen 0 0 "Welcome to the Caves of Clojure!") - (s/put-string screen 0 1 "Press enter to win, anything else to lose.")) - -(defmethod draw-ui :win [ui game screen] - (s/put-string screen 0 0 "Congratulations, you win!") - (s/put-string screen 0 1 "Press escape to exit, anything else to restart.")) - -(defmethod draw-ui :lose [ui game screen] - (s/put-string screen 0 0 "Sorry, better luck next time.") - (s/put-string screen 0 1 "Press escape to exit, anything else to go.")) - -(defn draw-game [game screen] - (clear-screen screen) - (doseq [ui (:uis game)] - (draw-ui ui game screen)) - (s/redraw screen)) - - ; Main ------------------------------------------------------------------------ (defn run-game [game screen] (loop [{:keys [input uis] :as game} game]