    (do-action! ship action 1))
   )
 
-(defn reset-game! [ship]
-  (dosync (ref-set ship (create-ship)))
+(defn reset-game! [ship asteroid]
+  (dosync
+    (ref-set ship (create-ship))
+    (ref-set asteroid (create-asteroid 2)))
   nil)
 
 ; ----------------------------------------------------------

  (let [transformation (get-transformation-matrix ship point-size)
        polygon (polygon-to-screen shape transformation)
        cockpit-polygon (polygon-to-screen cockpit-shape transformation)]
    (draw-polygon g polygon color)
    (draw-polygon g cockpit-polygon cockpit-color)))

(defmethod paint :shot [g {:keys [shape color] :as shot}]
  (let [transformation (get-transformation-matrix shot point-size)
        polygon (polygon-to-screen shape transformation)]
    (draw-polygon g polygon color)))


         shot-pos (vec+vec position (num*vec size dir-vec))
         shot-speed (vec+vec speed (num*vec shot-speed dir-vec))]
     (create-shot shot-pos direction shot-speed))))

(defn create-asteroid
  ([size pos]
   (let [direction (rand (* 2 (Math/PI)))
         speed (num*vec (rand asteroid-max-speed) (rotate-vec direction [0 1]))
         rotation-speed (rand asteroid-max-rotation-speed)]
     {:type           :asteroid

      :size           size
      :shape          [[-1.0 -1.0] [1.0 -1.0] [1.0 1.0] [-1.0 1.0]]
      :color          (Color. 250 240 20)

      :position       pos
      :speed          speed
      :acceleration   0

      :direction      direction
      :rotation-speed rotation-speed
      }))
  ([size]
   (let [x (rand width)
         y (rand height)]
     (create-asteroid size [x y]))))

(defn out-of-bounds? [{[x y] :position size :size}]
  (or
