            [0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
            [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
            [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
-           [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
+           [0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0]
            [0 1 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 1 0]
            [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
            ])

     ]
    ))


(defn most-supportive-block [position]
  (let [[left right] (hero-feet-coords position)

      :right (move-right? app position))
    ))

(defn in-lava [app]
  (let [position (get-in app [:hero :position])]
    (some #{4} (current-blocks position))
    )
  )

(defn hero [app owner]
  (reify
    om/IWillMount
    (will-mount [_]
      (if (>= 0 (get-in @app [:hero :life]))
        (om/update! app [:game-over] true)
        (go-loop []
        (om/update! app [:hero :position :bottom] (vertical-position app))
        (when (= :left (get-in @app [:hero :move]))
          (when (can-move :left @app)
            (when (in-lava @app)
              (om/transact! app [:hero :life] (fn [old] (- old 1)))
              )
            (om/transact! app [:hero :position :left] (fn [old] (- old 5)))))
        (when (= :right (get-in @app [:hero :move]))
          (when (can-move :right @app)
            (when (in-lava @app)
              (om/transact! app [:hero :life] (fn [old] (- old 1)))
              )
            (om/transact! app [:hero :position :left] (fn [old] (+ old 5)))))
        (<! (timeout (/ 1000 60)))
        (recur)
        )
        )
      )
    om/IRenderState
    (render-state [this state]
      (dom/div #js {:className (hero-classes app) :style (hero-position app)} nil))
