Use input->screen in tutorial

This commit is contained in:
oakes
2014-05-23 13:50:34 -04:00
parent 275b74ae29
commit ef87700ace

View File

@@ -111,20 +111,21 @@ Now, what about mobile devices? We may not have a keyboard, so let's create an `
) )
``` ```
In this case, the screen map will contain an `:input-x` and `:input-y` for the point on the screen that was touched. We can simply check to see what part of the screen this point is by using `game` to get the overall game's width and height. In this case, the screen map will contain an `:input-x` and `:input-y` for the point on the screen that was touched. These are input coordinates, so normally it is best to convert them into screen coordinates with [input->screen](http://oakes.github.io/play-clj/core.input_screen.html) so they're using the same coordinate system as the entities.
```clojure ```clojure
:on-touch-down :on-touch-down
(fn [screen entities] (fn [screen entities]
(cond (let [pos (input->screen screen (:input-x screen) (:input-y screen))]
(> (:input-y screen) (* (game :height) (/ 2 3))) (cond
(println "down") (> (:y pos) (* (game :height) (/ 2 3)))
(< (:input-y screen) (/ (game :height) 3)) (println "up")
(println "up") (< (:y pos) (/ (game :height) 3))
(> (:input-x screen) (* (game :width) (/ 2 3))) (println "down")
(println "right") (> (:x pos) (* (game :width) (/ 2 3)))
(< (:input-x screen) (/ (game :width) 3)) (println "right")
(println "left"))) (< (:x pos) (/ (game :width) 3))
(println "left"))))
``` ```
Conveniently, the `:on-touch-down` function also runs when a mouse is clicked on the screen, so we are adding mouse support to the game as well! Conveniently, the `:on-touch-down` function also runs when a mouse is clicked on the screen, so we are adding mouse support to the game as well!
@@ -160,15 +161,16 @@ Now we can update our `:on-key-down` and `:on-touch-down` functions to move the
(move (first entities) :left))) (move (first entities) :left)))
:on-touch-down :on-touch-down
(fn [screen entities] (fn [screen entities]
(cond (let [pos (input->screen screen (:input-x screen) (:input-y screen))]
(> (:input-y screen) (* (game :height) (/ 2 3))) (cond
(move (first entities) :down) (> (:y pos) (* (game :height) (/ 2 3)))
(< (:input-y screen) (/ (game :height) 3)) (move (first entities) :up)
(move (first entities) :up) (< (:y pos) (/ (game :height) 3))
(> (:input-x screen) (* (game :width) (/ 2 3))) (move (first entities) :down)
(move (first entities) :right) (> (:x pos) (* (game :width) (/ 2 3)))
(< (:input-x screen) (/ (game :width) 3)) (move (first entities) :right)
(move (first entities) :left))) (< (:x pos) (/ (game :width) 3))
(move (first entities) :left))))
``` ```
## Camera ## Camera