File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 5353 :traces (conj traces position)))))
5454
5555(defn update-world
56- " Simulates few steps for world."
56+ " Simulates few steps for world. Returns new world and remaining time. "
5757 [world time]
5858 (let [{bullets :bullets
5959 planets :planets } world]
60- (if (< time 0 )
61- world
60+ (if (< time 1 )
61+ [ world time]
6262 (recur (assoc world
6363 :bullets (doall (map #(update-bullet % planets) bullets)))
6464 (- time 1 )))))
Original file line number Diff line number Diff line change 5555 (Display/destroy )
5656 (let [new-time (get-time )
5757 time-delta (- new-time time)
58- new-world (update-world world (* time-delta time-scale))]
58+ [ new-world remaining-time] (update-world world (* time-delta time-scale))]
5959 (Display/sync fps)
6060 (Display/update )
61- (recur new-time new-world))))))
61+ (recur (+ new-time remaining-time)
62+ new-world))))))
6263
6364(defn clear-display
6465 []
Original file line number Diff line number Diff line change 2525 [world]
2626 (count (:players world)))
2727
28+ (defn world-after
29+ [world time]
30+ (first (update-world world time)))
31+
2832; ; Simple tests:
2933
3034(deftest get-player-test
9195
9296; ; Complex tests:
9397
98+ (deftest timing-test
99+ (let [world1 (get-test-world )
100+ world2 (fire world1 " player-1" )
101+ [world3 dtime3] (update-world world2 10.5 )
102+ [world4 dtime4] (update-world world3 0.6 )
103+ bullet3 (first (:bullets world3))
104+ bullet4 (first (:bullets world4))]
105+ (is (= (count (:traces bullet3)) 10 ))
106+ (is (almost= dtime3 0.5 ))
107+ (is (almost= dtime4 0.6 ))
108+ (is (= (:center bullet3)
109+ (:center bullet4)))))
110+
94111(deftest complex-firing-test
95112 (let [world1 (get-test-world )
96113 world2 (fire world1 " player-1" )
97- world3 (update- world world2 10000 )]
114+ world3 (world-after world2 10000 )]
98115 (is (= (alive-bullet-count world2) 1 ))
99116 (is (= (dead-bullets-count world2) 0 ))
100117
103120
104121(deftest kill-test
105122 (let [world1 (get-test-world )
106- world2 (update- world (fire world1 " player-2" ) 10000 )]
123+ world2 (world-after (fire world1 " player-2" ) 10000 )]
107124 (is (= (alive-player-count world2) 1 ))))
You can’t perform that action at this time.
0 commit comments