Étape 6: Détection de Collision
La dernière chose que nous devons faire est de détecter si la balle frappe la raquette ou pas.
Nous savons que ce joueur a manqué la balle quand le bas du ballon est le haut de la palette, ou la partie supérieure de la palette est au-delà du bas de la palette.
Nous savons que le ballon ne frappera jamais les pagaies à moins que la balle est sur le X extrême droite ou d’extrême gauche, donc nous avons seulement besoin de vérifier les pagaies dans ces deux scénarios.
bool MissedPaddle(u8g_uint_t py)<br>{ u8g_uint_t ballTop = ballY; u8g_uint_t ballBottom = ballY + ballSize - 1; u8g_uint_t paddleTop = py; u8g_uint_t paddleBottom = py + paddleHeight - 1; return ballBottom < paddleTop || ballTop > paddleBottom; }
Quand quelqu'un raté une balle, nous déplacer la balle de l’autre côté, jouer un ton boule manqués et incrémenter le score de l’autre joueur. Lorsque le score atteint le score de gagner, c’est game over:-)
void Player0Missed()<br>{ // When left player missed, move the ball just to the left of rightmost of court ballX = courtWidth - ballSize - 1; ballY = paddle1Y + paddleHalfHeight; // ball will be served at location of player 1's paddle tone(tonePin, missToneFrequency, missToneDuration); delay(1000); score1++; animationSpeed = animationSpeed0; if (score1 == winningScore) gameOver = true; } void Player1Missed()<br>{ // When right player missed, move the ball just to the right of the leftmost of court ballX = 1; ballY = paddle0Y + paddleHalfHeight; // ball will be served at location of player 0's paddle tone(tonePin, missToneFrequency, missToneDuration); delay(1000); score0++; animationSpeed = animationSpeed0; if (score0 == winningScore) gameOver = true; }