HariFun #136 - hur man skriver ett spel (6 / 8 steg)
Steg 6: Kollision upptäckt
Det sista vi behöver göra är att upptäcka om bollen träffar paddla eller inte.
Vi vet att spelare missade bollen när botten av bollen är över toppen av paddla, eller toppen av paddeln är bortom botten av paddeln.
Vi vet att bollen aldrig slå paddlar om inte bollen är på längst till höger eller till vänster X, så vi behöver bara kontrollera paddlar i dessa två scenarier.
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;
återgå ballBottom < paddleTop || ballTop > paddleBottom;
}
När någon missat en boll, ska vi flytta bollen till andra sidan, spela en missade bollen ton och öka andra spelarens poäng. När poängen når vinnande poäng, är det spelet över :-)
void Player0Missed() < br > {
När vänster-spelare missat, flytta bollen precis till vänster om längst till höger i domstolen
ballX = courtWidth - ballSize - 1;
ballY = paddle1Y + paddleHalfHeight; bollen kommer att serveras på plats av spelare 1's paddlar
tonar (tonePin, missToneFrequency, missToneDuration);
Delay(1000);
score1 ++;
animationSpeed = animationSpeed0;
om (score1 == winningScore) gameOver = sant;
}
void Player1Missed() < br > {
När rätt spelare missade, flytta bollen precis till höger om den längst till vänster i domstolen
ballX = 1;
ballY = paddle0Y + paddleHalfHeight; bollen kommer att serveras på plats av spelare 0's paddlar
tonar (tonePin, missToneFrequency, missToneDuration);
Delay(1000);
score0 ++;
animationSpeed = animationSpeed0;
om (score0 == winningScore) gameOver = sant;
}