Skip to content

Commit 79ec2e1

Browse files
committed
Fixed time issue.
1 parent a6c9748 commit 79ec2e1

3 files changed

Lines changed: 25 additions & 7 deletions

File tree

src/hyperspace/game.clj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@
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)))))

src/hyperspace/ui.clj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@
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
[]

test/hyperspace/test/game.clj

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
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
@@ -91,10 +95,23 @@
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

@@ -103,5 +120,5 @@
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))))

0 commit comments

Comments
 (0)