@@ -37,7 +37,14 @@ namespace pong {
3737
3838 constexpr int winWidth = 480 ;
3939 constexpr int winHeight = 272 ;
40+ constexpr float bounce = -1 .05f ;
41+ const vec2 barsSize{5 ,40 };
42+ constexpr float speedFac = 500 ;
43+ constexpr float ballRadius = 5 ;
44+ const vec2 ballStartSpeed{130 ,130 };
45+
4046 using KeyMap = unordered_map<SDLKey,vec2>;
47+
4148 template <class K , class V >
4249 auto getOrElse (const unordered_map<K,V>& m,const K& key, const V& def) -> const V& {
4350 auto it = m.find (key);
@@ -58,7 +65,6 @@ namespace pong {
5865 }
5966 };
6067
61- constexpr float bounce = -1 .05f ;
6268
6369 auto foldBallState (float dt, MovableState prev, const rect& lbar, const rect& rbar) -> MovableState {
6470 if (prev.pos .y > winHeight || prev.pos .y < 0 ) {
@@ -81,7 +87,6 @@ namespace pong {
8187 return getOrElse (m,e.key .keysym .sym ,{0 ,0 })*val;
8288 }
8389
84- constexpr float speedFac = 500 ;
8590
8691 auto dirToSpeed (const vec2& dir, vec2 speed) -> vec2 {
8792 return speed += dir*speedFac;
@@ -92,7 +97,6 @@ namespace pong {
9297 return newPos;
9398 }
9499
95- const vec2 barsSize{5 ,40 };
96100
97101 auto posToRect (const vec2& size, const vec2& pos) -> rect {
98102 return rect{pos,size};
@@ -130,13 +134,13 @@ namespace pong {
130134
131135 SignalT<MovableState> ballState = Iterate(
132136 frameEvent,
133- MovableState{{winWidth/2 ,winHeight/2 },{ 130 , 130 } },
137+ MovableState{{winWidth/2 ,winHeight/2 },ballStartSpeed },
134138 With (lbarRect,rbarRect),
135139 foldBallState
136140 );
137141
138142 SignalT<rect> ballRect = MakeSignal(MakeSignal(ballState,[](const MovableState& s)->vec2{return s.pos ;}),
139- bind (posToRect,vec2{5 , 5 },_1));
143+ bind (posToRect,vec2{ballRadius,ballRadius },_1));
140144
141145 void run () {
142146 // Close window on sysevent close
0 commit comments