         (flames/create-flames shots-hit)
         (explode/create-explosion roids-hit))))
 
+;; ship collisions
+;;
 (defn ship-hit [state ship-hits]
   (if (seq ship-hits)
     (assoc-in state [:objects :ship] nil)

              hits (concat hits hit)]
          (recur hits (rest objs)))))))

(defn remove-shots [state shots-hit]
  (let [shots (get-in state [:objects :shots])
        shots (sequence (remove #(= % (first shots-hit))) shots)]

        (explode/create-explosion ship-hits 20)
        (ship-hit ship-hits))))

;; saucer collisions
;;
(defn saucer-hit [state saucer-hits]
  (if (seq saucer-hits)
    (assoc-in state [:objects :saucer] nil)
    state))

(defn saucer-roid [state]
  (let [[saucer-hits roids-hit] (collisions1 state :saucer :roids)]
    (-> state
        (flames/create-flames saucer-hits)
        (explode/create-explosion saucer-hits 20)
        (saucer-hit saucer-hits))))

(defn saucer-shots [state]
  (let [[shots-hits saucer-hits] (collisions1 state :shots :saucer)]
    (-> state
        (flames/create-flames saucer-hits)
        (explode/create-explosion saucer-hits 20)
        (saucer-hit saucer-hits))))

(defn saucer [state]
  (-> state (saucer-roid) (saucer-shots)))

;; collisions
;;
(defn collisions [state]
  (-> state (shot-roid) (ship-roid) (saucer)))
