     (map f pol))
   )
 
+(declare fill-polygon draw-polygon)
 
 (defn create-ship []
   {:type                   :ship

              (int \D) {:rotation turn-speed}
              (int \W) {:acceleration 1}
              (int \K) {:shoot true}
              (int \R) {:reset true}
              (int \1) {:set-level 1}
              (int \2) {:set-level 2}
              (int \3) {:set-level 3}

    (if (empty? coll)
      [obj1 coll-result]
      (let [[obj1 obj2] (check-collision obj1 (first coll))]
        (recur obj1 (rest coll) (conj coll-result obj2))))))

(defmethod check-collision :seq-seq [coll1 coll2]
  (loop [coll1 coll1, coll2 coll2, coll1-result []]
    (if (empty? coll1)
      [coll1-result coll2]
      (let [[obj1 coll2] (check-collision (first coll1) coll2)]
        (recur (rest coll1) coll2 (conj coll1-result obj1))))))

(defmulti handle-collision (fn [{type :type}]
                             (if (#{:ship :shot :asteroid} type)
