       (print " ")
       (print nextCheckpointY)
       (print " ")
-      (print (compute-action
-               nextCheckpointX nextCheckpointY
-               nextCheckpointDist nextCheckpointAngle
-               x y
-               opponentX opponentY
-               boost-used? game-loop-counter)))
-    (println "")))
+      (reset! last-boost-value (compute-action
+                                 nextCheckpointX nextCheckpointY
+                                 nextCheckpointDist nextCheckpointAngle
+                                 x y
+                                 opponentX opponentY
+                                 boost-used?
+                                 game-loop-counter
+                                 max-shield-usage
+                                 last-shield-usage
+                                 last-boost-value))
+      (print @last-boost-value))
+    (println "")))
    ; (> next-checkpoint-distance 4000) "100"
    true "100"))

(def max-shield-usage (atom 3))
(def last-shield-usage (atom 0))
(def boost-used? (atom false))
(def game-loop-counter (atom 0))

;;Compute BOOST, SHIELD or boost value between 0 and 100
(defn compute-action [next-checkpoint-x next-checkpoint-y next-checkpoint-distance next-checkpoint-angle x y opponent-x opponent-y boost-used? game-loop-counter]
  (cond
    (and (not @boost-used?) (> @game-loop-counter 3) (< (Math/abs next-checkpoint-angle) 10) (> next-checkpoint-distance 4000)) (do (reset! boost-used? true) "BOOST")
    (and (= @last-shield-usage 0) (> @game-loop-counter 10) (> @max-shield-usage 0) (< (distance opponent-x opponent-y x y) 1000)) (do (reset! last-shield-usage 3) (swap! max-shield-usage dec-atom) "SHIELD")
    true (compute-boost next-checkpoint-distance next-checkpoint-angle)))


(defn -main [& args]
  (while true

      ; nextCheckpointAngle: angle between your pod orientation and the direction of the next checkpoint

      (swap! game-loop-counter inc-atom)
      (if (> @last-shield-usage 0)
        (swap! last-shield-usage dec-atom))

      ; (binding [*out* *err*]
      ;   (println "Debug messages..."))
      ;(binding [*out* *err*]
      ;  (println (str "Has the boost been used ? : " @boost-used?))
      ;  (println (str "Next check point distance coordinates : (" nextCheckpointX "," nextCheckpointY ")"))
      ;  (println (str "Given next check point distance : " nextCheckpointDist))
      ;  (println (str "Calculated next check point distance : " (distance x y nextCheckpointX nextCheckpointY)))
      ;  (println (str "Pod angle with checkpoint : " nextCheckpointAngle))
      ;  (println (str "Calculated Pod angle with checkpoint : " (angle-between-2-points x y nextCheckpointX nextCheckpointY)))
      ;  (println (str "Pod Position : (" x "," y ")"))
      ;  (println (str "Opponent pod Position : (" opponentX "," opponentY ")"))
      ;  (println (str "Opponent distance : " opponent-distance))
      ;  (println (str "Calculated Pod angle with opponent : " (angle-between-2-points x y opponentX opponentY)))
      ;  (println (str "Max Shield Usage : " @max-shield-usage))
      ;  (println (str "Last Shield Usage : " @last-shield-usage))
      ;  (println (str "Game loop counter : " @game-loop-counter))
      ;  (println (str "Last boost value : " @last-boost-value)))



      ; You have to output the target position
