 
 (defn avanza-gioco [celle]
   (let [celle-con-turni (reduce aggiunge-1-turno celle (coordinate-gioco))]
-
-
-  (reduce avanza-gioco-cella celle-con-turni (coordinate-gioco) )))
-
-
+     (reduce avanza-gioco-cella celle-con-turni (coordinate-gioco) )))
+
+
+(defn join-val [dict chiave valore]
+  (let [v0 (conj (get-in dict [chiave]) valore)]
+    (assoc-in dict [chiave] v0)
+  ))
+
+(defn conta-celle
+  "Restituisce un hash con tutte le celle per tipo"
+  [celle]
+  (reduce #(update-in %1 [%2] inc) {:PESCE 0 :SQUALO 0}
+    (for [rc (coordinate-gioco)]
+      (:tipo (get-in celle rc)))))
+
+
+
+
+(defn run-turno-gioco
+  "Questo metodo è chiamato dal bottone"
+  []
+  (let [t0 (.getTime (js/Date.))
+        new-cells (avanza-gioco (:pf @app-state))
+        tipi-celle (conta-celle new-cells)
+        ;x (println "TC:" tipi-celle)
+        t1 (.getTime (js/Date.))
+        dur (- t1 t0)]
+    (do
+      (imposta-campo-di-gioco new-cells)
+      (swap! app-state update-in [:turn] inc)
+      (swap! app-state join-val :n_pesci (:PESCE tipi-celle))
+      (swap! app-state join-val :n_squali (:SQUALO tipi-celle))
+      (swap! app-state join-val :loop_ms dur)
+
+
+     )
+
+  ))
 
 
 

                (imposta-animale (:pf @app-state) [1 1] (crea-nuovo-pesce))) }]

     [:br ]
     ;[:pre (str @app-state)]



; defn animali
(defn crea-nuovo-pesce []
  {:tipo    :PESCE
   :colore  (rand-nth COLORI-PESCI)
   :energia 0
   :turns   0})

(defn crea-nuovo-squalo []
  {:tipo    :SQUALO
   :colore  (rand-nth COLORI-SQUALI)
   :energia 0
   :turns   0})

