Stillness in Motion - Clojure


#1

Can someone help me out with this one? It seemed completely straight forward but I’ve rewritten it in a handful of ways and it won’t work at all. In this one I litterally just fille din the blanks, and still no luck.

;; You can put one if-statement within another if-statement.
;; However, doing so can be tricky, so you have to pay close attention to how the if statements interact with each other.
;; Make sure the indentation is correct!
;; Use comments to describe your logic in plain language!
;; It's helpful to start with one outer if/else, using comments as placeholders for the inner if/else, like so:
(dotimes [n 1000]
    (let [enemy (.findNearestEnemy this)]
        ;; If there is an enemy, then...
        (if enemy
            (do
                ;; Create a distance variable with distanceTo.
                (def distance (.distanceTo this enemy))
                ;; If the enemy is less than 5 meters away, then attack()
                (if (< distance 5)
                    (.attack this enemy)
                ;; Otherwise (the enemy is far away), then shield()
                    (.shield this)
                )
            )
            ;; Otherwise (there is no enemy...)
            ;; ... then move back to the X.
            (.moveXY this 40 34)
        )
    )
)

Here’s a rewrite

(dotimes [n 1000]
    (def enemy (.findNearestEnemy this))
    (if enemy
        (do
            (if (< (.distanceTo this enemy) 5)
                (.attack this enemy)
                (.shield this)
            )
        )
        (.moveXY this 40 34)
    )
)

This code did work:

(dotimes [n 1000]
    (def enemy (.findNearestEnemy this))
    (if enemy (if (< (.distanceTo this enemy) 5) (.attack this enemy)))
    (.moveXY this 40 34)
)

And I guess for that matter so did

(dotimes [n 1000]
    (if (.isReady this "cleave") (.cleave this (.findNearestEnemy this)))
    (.moveXY this 40 34)
)

On a side note this editor keeps giving me a blank screen when I hit ctrl+k and it submitted the form when I hit enter for new line…