Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Ball/Ball.cpp@3:fe856d0890ee, 2019-03-23 (annotated)
- Committer:
- kocemax
- Date:
- Sat Mar 23 11:17:33 2019 +0000
- Revision:
- 3:fe856d0890ee
- Parent:
- 2:006a2ddfabb6
- Child:
- 4:0e01cbb95434
Have a working collision detection with the pad, if the ball falls below it game over. Will try to move some of the function around the make the code simpler and easier to read.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kocemax | 2:006a2ddfabb6 | 1 | #include "Ball.h" |
kocemax | 2:006a2ddfabb6 | 2 | #include "PlayerControl.h" |
kocemax | 2:006a2ddfabb6 | 3 | |
kocemax | 3:fe856d0890ee | 4 | int g_xBall = WIDTH/2; // draw ball in the middle of the columns initially |
kocemax | 3:fe856d0890ee | 5 | int g_yBall = HEIGHT - GAP - 2; // draw ball close to the bottom of the LCD |
kocemax | 3:fe856d0890ee | 6 | int g_counterx = 1; |
kocemax | 3:fe856d0890ee | 7 | int g_countery = 1; |
kocemax | 2:006a2ddfabb6 | 8 | |
kocemax | 2:006a2ddfabb6 | 9 | // Constructor |
kocemax | 2:006a2ddfabb6 | 10 | Ball::Ball() |
kocemax | 2:006a2ddfabb6 | 11 | { |
kocemax | 3:fe856d0890ee | 12 | |
kocemax | 2:006a2ddfabb6 | 13 | } |
kocemax | 2:006a2ddfabb6 | 14 | |
kocemax | 2:006a2ddfabb6 | 15 | // Destructor |
kocemax | 2:006a2ddfabb6 | 16 | Ball::~Ball() |
kocemax | 2:006a2ddfabb6 | 17 | { |
kocemax | 2:006a2ddfabb6 | 18 | |
kocemax | 2:006a2ddfabb6 | 19 | } |
kocemax | 2:006a2ddfabb6 | 20 | |
kocemax | 2:006a2ddfabb6 | 21 | void Ball::drawBall(N5110 &lcd) |
kocemax | 2:006a2ddfabb6 | 22 | { |
kocemax | 3:fe856d0890ee | 23 | lcd.drawRect(g_xBall,g_yBall,2,2,FILL_BLACK); |
kocemax | 2:006a2ddfabb6 | 24 | } |
kocemax | 2:006a2ddfabb6 | 25 | |
kocemax | 2:006a2ddfabb6 | 26 | void Ball::moveBall() |
kocemax | 2:006a2ddfabb6 | 27 | { |
kocemax | 2:006a2ddfabb6 | 28 | |
kocemax | 3:fe856d0890ee | 29 | g_xBall += g_counterx; |
kocemax | 3:fe856d0890ee | 30 | g_yBall -= g_countery; |
kocemax | 2:006a2ddfabb6 | 31 | |
kocemax | 3:fe856d0890ee | 32 | if (g_xBall > 82) |
kocemax | 2:006a2ddfabb6 | 33 | { |
kocemax | 3:fe856d0890ee | 34 | g_counterx = -1; |
kocemax | 3:fe856d0890ee | 35 | } |
kocemax | 3:fe856d0890ee | 36 | else if(g_xBall < 1) |
kocemax | 3:fe856d0890ee | 37 | { |
kocemax | 3:fe856d0890ee | 38 | g_counterx = 1; |
kocemax | 2:006a2ddfabb6 | 39 | } |
kocemax | 3:fe856d0890ee | 40 | if (g_yBall < 1) |
kocemax | 3:fe856d0890ee | 41 | { |
kocemax | 3:fe856d0890ee | 42 | g_countery = -1; |
kocemax | 3:fe856d0890ee | 43 | } |
kocemax | 3:fe856d0890ee | 44 | else if (g_yBall > 46) |
kocemax | 2:006a2ddfabb6 | 45 | { |
kocemax | 3:fe856d0890ee | 46 | g_countery = 1; |
kocemax | 2:006a2ddfabb6 | 47 | } |
kocemax | 3:fe856d0890ee | 48 | } |
kocemax | 3:fe856d0890ee | 49 | |
kocemax | 3:fe856d0890ee | 50 | void Ball::hitPad(Gamepad &pad) |
kocemax | 3:fe856d0890ee | 51 | { |
kocemax | 3:fe856d0890ee | 52 | PlayerControl pl; |
kocemax | 3:fe856d0890ee | 53 | Vector2D posBall = get_ballPos(pad); |
kocemax | 3:fe856d0890ee | 54 | Vector2D posPad = pl.get_padPos(pad); |
kocemax | 3:fe856d0890ee | 55 | if (posBall.y == posPad.y - 2 && (posBall.x >= posPad.x && posBall.x <= posPad.x + 12)) |
kocemax | 3:fe856d0890ee | 56 | { |
kocemax | 3:fe856d0890ee | 57 | g_countery = !g_countery; |
kocemax | 3:fe856d0890ee | 58 | printf("\nball x = %f, ball y = %f \n pad x = %f, pad y = %f ",posBall.x, posBall.y, posPad.x, posPad.y); |
kocemax | 2:006a2ddfabb6 | 59 | } |
kocemax | 3:fe856d0890ee | 60 | |
kocemax | 3:fe856d0890ee | 61 | |
kocemax | 2:006a2ddfabb6 | 62 | } |
kocemax | 2:006a2ddfabb6 | 63 | |
kocemax | 2:006a2ddfabb6 | 64 | Vector2D Ball::get_ballPos(Gamepad &pad) |
kocemax | 2:006a2ddfabb6 | 65 | { |
kocemax | 3:fe856d0890ee | 66 | Vector2D posBall = {g_xBall,g_yBall}; |
kocemax | 2:006a2ddfabb6 | 67 | return posBall; |
kocemax | 2:006a2ddfabb6 | 68 | } |
kocemax | 2:006a2ddfabb6 | 69 | |
kocemax | 2:006a2ddfabb6 | 70 | bool Ball::endCondition(Gamepad &pad) |
kocemax | 2:006a2ddfabb6 | 71 | { |
kocemax | 2:006a2ddfabb6 | 72 | PlayerControl pl; |
kocemax | 2:006a2ddfabb6 | 73 | Vector2D posBall = get_ballPos(pad); |
kocemax | 2:006a2ddfabb6 | 74 | Vector2D posPad = pl.get_padPos(pad); |
kocemax | 3:fe856d0890ee | 75 | if (posBall.y > posPad.y) |
kocemax | 2:006a2ddfabb6 | 76 | { |
kocemax | 2:006a2ddfabb6 | 77 | return true; |
kocemax | 2:006a2ddfabb6 | 78 | } |
kocemax | 2:006a2ddfabb6 | 79 | else return false; |
kocemax | 2:006a2ddfabb6 | 80 | } |