<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,8 @@
 (ns uk.co.fatvat.robot.NotQuiteAsBad
   (import (java.awt Color))
-  (:gen-class :extends robocode.Robot :init create-robot :state state))
+  (import (robocode Rules))
+  (import (robocode.util Utils))
+  (:gen-class :extends robocode.AdvancedRobot :init create-robot :state state))
 
 (defstruct target-details :distance :bearing :energy :velocity)
 
@@ -11,51 +13,46 @@
 
 (defn- setup-robot
   [robot]
-  &quot;Ensure robot looks pretty and has independent movement for radar and gun&quot;
+  &quot;Ensure robot looks pretty&quot;
   (doto robot
-    (.setColors Color/RED Color/BLACK Color/RED)
     (.setAdjustRadarForGunTurn true)
-    (.setAdjustGunForRobotTurn true)))
-
-(defn- walk
-  [robot]
-  &quot;Go for a random walk to try and find someone to hurt&quot;
-  (doto robot
-    (.ahead (rand-int 100))
-    (.turnRight (rand-int 360))
-    (.turnRadarLeft (rand-int 360))
-    (.back (rand-int 100))
-    (.turnLeft (rand-int 360))))
+    (.setColors Color/RED Color/BLACK Color/RED)))
 
 (defn- attack
-  [robot history]
+  [robot]
   &quot;Based on the accrued events, hurt robots&quot;
-  (doto robot
-    (.fire 3)))
-	       
-(defn- process-events
+  (let [latest (last @(.state robot))]
+    (.turnRight robot (get latest :bearing))
+    (when (zero? (get latest :velocity))
+      (.fire robot 3))
+    (.setTurnRadarRight robot 360)))
+
+(defn- walk
   [robot]
-  (let [state @(.state robot)]
-    (if (empty? state)
-      (walk robot)
-      (attack robot state))))
+  &quot;Go for a walk around the outside of the building&quot;
+  (let [x (mod (.getHeading robot) 90)]
+    (.ahead robot 50)
+    (when (not (zero? x))
+      (.turnLeft robot x))
+    (when (zero? (.getVelocity robot))
+      (.turnRight robot 90))))
 
 (defn -run
   [robot]
   &quot;Infinite loop whilst robot is alive&quot;
   (setup-robot robot)
   (loop [x 1] ;; TODO is there a better idiom for an infinite loop?
-    (process-events robot)
-    (recur 1))
-  (recur robot))
+   (walk robot)
+    (recur 1)))
 
 (defn -onScannedRobot
-  [robot event]
+  [robot event] 
   (let [distance (.getDistance event)
 	name (.getName event)
 	energy (.getEnergy event)
 	velocity (.getVelocity event)
-	bearing (.getBearing event)
-	state (.state robot)]
+	bearing (.getBearing event)]
     (dosync
-     (alter (.state robot) (cons (struct target-details distance bearing energy velocity) @state)))))
\ No newline at end of file
+     (alter (.state robot) conj (struct target-details distance bearing energy velocity)))
+    (attack robot)))
+  
\ No newline at end of file</diff>
      <filename>robocode/src/uk/co/fatvat/robot/NotQuiteAsBad.clj</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>80918c33e0166968660daf9e9434e5a67d274687</id>
    </parent>
  </parents>
  <author>
    <name>Jeff Foster</name>
    <email>jeff.foster@acm.org</email>
  </author>
  <url>http://github.com/fffej/ClojureProjects/commit/78d207afbfa9bb9aef4e1fd4bcfb82794193b56c</url>
  <id>78d207afbfa9bb9aef4e1fd4bcfb82794193b56c</id>
  <committed-date>2009-05-21T00:09:35-07:00</committed-date>
  <authored-date>2009-05-21T00:09:35-07:00</authored-date>
  <message>Slightly tougher</message>
  <tree>0f22068df8e92ee47065cfddee73f628b949c9ab</tree>
  <committer>
    <name>Jeff Foster</name>
    <email>jeff.foster@acm.org</email>
  </committer>
</commit>
