Solved
Sorry for this thread but i already solved the problem.
Solution:
Hello Everybody,Code:if(BallCurrentLocation->y >= Player1CurrentLocation->y && BallCurrentLocation->y <= SizeBat)
I write a Pong game. Now I have a little problem with validating the position of the ball. This is the situation:
I made the basic algorithm that moves the ball to the left and the right of the screen when it hits the left/right side of the screen, is works fine. But now i try to include the option: "when the ball hits a players bat change direction". what i made seems to work but i discovered that is doesn't work 100% because sometimes the ball bounces back when the ball misses the players bat.
schema of my screen, see improvised images: http://static.tz.nl/f/g/47234_4053113b.jpeg
so check if the ball hits a players bat i have:
- y,x position on both bats.
- height of both bats.
- width of the ball.
I question is,how can I check with a if statement, if the ball hits a bat or not:
this my code snippet:
explanation of code:Code:..... if(BallCurrentLocation->x < (Player2CurrentLocation->x - this->ObjBall->ReturnBallWidth())) { BallCurrentLocation->x++; } else { SizeBat = Player2CurrentLocation->y + Player2->ReturnBatHeigth(); if(BallCurrentLocation->y == Player2CurrentLocation->y || BallCurrentLocation->y <= SizeBat) { this->Balldirection= true; } else { BallCurrentLocation->x++; if(BallCurrentLocation->x == this->ReturnWindowWidth() - this->ObjBall->ReturnBallWidth()) { Gamestate = false; } } .....
first if the ball x position doesn't match the players bat, i moves the ball, but when the ball x position matches the x position of the ball if looks if the position of the ball is between the bat y position + the bats height (because the the bat position is the top of the bat ofcourse). if that is true change direction.
Can you Folks see if this is a correct algorithm, and haves no logical leaks?
Thanks for helping,
Jelte.
EDIT:
I think this statements stinks.
I Also discovered that the "bug" (so the ball bounces back but i doesn't hit the players bat) only happens when the bat are "under the ball" so the players bat x position is larger then then ball x position)Code:if(BallCurrentLocation->y == Player2CurrentLocation->y || BallCurrentLocation->y <= SizeBat)



LinkBack URL
About LinkBacks


