From b367dfe6cb3e1af25a582e0a159bd0c9448a588f Mon Sep 17 00:00:00 2001 From: Abhinav Sarkar Date: Wed, 25 Sep 2013 17:08:06 +0530 Subject: [PATCH] Moved to basic SVG --- resources/public/index.html | 5 ++- src/cljs/frpong/core.cljs | 70 ++++++++++++++++++------------------- 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/resources/public/index.html b/resources/public/index.html index 8d18882..9a74b2d 100644 --- a/resources/public/index.html +++ b/resources/public/index.html @@ -10,7 +10,10 @@
FPS:
Position:
-
O
+ + + + diff --git a/src/cljs/frpong/core.cljs b/src/cljs/frpong/core.cljs index 683a85a..9ea8b28 100644 --- a/src/cljs/frpong/core.cljs +++ b/src/cljs/frpong/core.cljs @@ -9,26 +9,26 @@ ;; ;; Signal Diagram ;; -;; +---------------------+ -;; | +-------------+ | -;; | | | | -;; v v | | -;; +----------+ vel-chan | | -;; +-->|c-detector+----------+ | -;; | +----------+ | | -;; | +-----------------+ | -;; | | +-----------------+ -;; | | | | -;; | v v | -;; +---------+ frame-chan +------+ tick-chan | +----------+ pos-chan | -;; |frame-gen+------------>|ticker+-----------+-->|positioner+--------------+ -;; +---------+ +------+ +----------+ | -;; +---------------------+ -;; | -;; v -;; +----------+ -;; | renderer | -;; +----------+ +;; +---------------------+ +;; | +-------------+ | +;; | | | | +;; v v | | +;; +----------+ vel-chan | | +;; +-->|c-detector+----------+ | +;; | +----------+ | | +;; | +-----------------+ | +;; | | +-----------------+ +;; | | | | +;; | v v | +;; +---------+ frame-chan +------+ tick-chan | +----------+ pos-chan | +;; |frame-gen+------------>|ticker+-----------+-->|positioner+--------------+ +;; +---------+ +------+ +----------+ | +;; +---------------------+ +;; | +;; v +;; +----------+ +;; | renderer | +;; +----------+ (defn positioner [tick-chan vel-chan pos-chan-in pos-chan-out] (go-loop @@ -38,19 +38,15 @@ pos-next [(+ x (* vel-x tick)) (+ y (* vel-y tick))]] (>! pos-chan-out pos-next)))) -(defn collision-detector [width height tick-chan pos-chan vel-chan-in vel-chan-out] +(defn collision-detector [width height padding tick-chan pos-chan vel-chan-in vel-chan-out] (go-loop (let [tick (! vel-chan-out - (cond - (< xn 0) [(- vel-x) vel-y] - (< yn 0) [vel-x (- vel-y)] - (> xn width) [(- vel-x) vel-y] - (> yn height) [vel-x (- vel-y)] - :else [vel-x vel-y]))))) + [xn yn] [(+ x (* vel-x tick)) (+ y (* vel-y tick))] + vel-xn (if (and (> xn padding) (< xn (- width padding))) vel-x (- vel-x)) + vel-yn (if (and (> yn padding) (< yn (- height padding))) vel-y (- vel-y))] + (>! vel-chan-out [vel-xn vel-yn])))) (defn ^:export init [] (let [frame-chan (h/frame-chan) @@ -58,10 +54,11 @@ fps-chan (h/map-chan #(/ 1000 %) (h/diff-chan frame-chan2)) - width 100 - height 100 - init-pos [0 50] - init-vel [0.05 0.05] + width 300 + height 200 + padding 5 + init-pos [5 100] + init-vel [0.1 0.12] [tick-chan-pos tick-chan-collsion] (h/dup-chan (h/diff-chan frame-chan1)) @@ -71,7 +68,8 @@ vel-chan (chan) [vel-chan-pos vel-chan-collision] (h/dup-chan vel-chan)] (positioner tick-chan-pos vel-chan-pos pos-chan-pos pos-chan) - (collision-detector width height tick-chan-collsion pos-chan-collision vel-chan-collision vel-chan) + (collision-detector width height padding + tick-chan-collsion pos-chan-collision vel-chan-collision vel-chan) (go (>! pos-chan init-pos)) (go (>! vel-chan init-vel)) @@ -80,5 +78,5 @@ (let [[x y] (map int (