Stefan Schuermans commited on 2019-06-16 13:39:19
Showing 1 changed files, with 14 additions and 4 deletions.
... | ... |
@@ -243,6 +243,7 @@ void Pong::reinitialize() |
243 | 243 |
m_scoreRight = 0; |
244 | 244 |
|
245 | 245 |
// start first ball |
246 |
+ m_ballDirX = 0; // start at random side |
|
246 | 247 |
startBall(); |
247 | 248 |
} |
248 | 249 |
|
... | ... |
@@ -602,13 +603,22 @@ void Pong::planTimeCall() |
602 | 603 |
/// start ball |
603 | 604 |
void Pong::startBall() |
604 | 605 |
{ |
605 |
- // ball starts horizontally at middle of field, vertically random |
|
606 |
- m_ballPosX = (m_width - (rand() & 1)) / 2; |
|
607 |
- m_ballPosY = rand() % m_height; |
|
608 |
- // random diagonal direction |
|
606 |
+ // horizontal start direction opposite as before goal or random |
|
607 |
+ if (m_ballDirX > 0) { |
|
608 |
+ m_ballDirX = -1; |
|
609 |
+ } else if (m_ballDirX < 0) { |
|
610 |
+ m_ballDirX = 1; |
|
611 |
+ } else { |
|
609 | 612 |
m_ballDirX = (rand() & 1) * 2 - 1; |
613 |
+ } |
|
614 |
+ // random vertical start direction |
|
610 | 615 |
m_ballDirY = (rand() & 1) * 2 - 1; |
611 | 616 |
|
617 |
+ // horizontal start postion at side of field (depending on direction) |
|
618 |
+ m_ballPosX = m_ballDirX > 0 ? 0 : m_width - 1; |
|
619 |
+ // random vertical start position |
|
620 |
+ m_ballPosY = rand() % m_height; |
|
621 |
+ |
|
612 | 622 |
// no delays, ball has not bounced at pad |
613 | 623 |
m_leftDelay = 0; |
614 | 624 |
m_rightDelay = 0; |
615 | 625 |