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@2:006a2ddfabb6, 2019-03-20 (annotated)
- Committer:
- kocemax
- Date:
- Wed Mar 20 20:58:36 2019 +0000
- Revision:
- 2:006a2ddfabb6
- Child:
- 3:fe856d0890ee
Added a ball, which is confined inside the screen. If the ball reaches the y level of the pad, the game is over. Have not added collision detection yet.
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 | 2:006a2ddfabb6 | 4 | |
kocemax | 2:006a2ddfabb6 | 5 | // Constructor |
kocemax | 2:006a2ddfabb6 | 6 | Ball::Ball() |
kocemax | 2:006a2ddfabb6 | 7 | { |
kocemax | 2:006a2ddfabb6 | 8 | _xBall = WIDTH/2; // draw ball in the middle of the columns initially |
kocemax | 2:006a2ddfabb6 | 9 | _yBall = HEIGHT - GAP - 2; // draw ball close to the bottom of the LCD |
kocemax | 2:006a2ddfabb6 | 10 | _counterx = 1; |
kocemax | 2:006a2ddfabb6 | 11 | _countery = 1; |
kocemax | 2:006a2ddfabb6 | 12 | } |
kocemax | 2:006a2ddfabb6 | 13 | |
kocemax | 2:006a2ddfabb6 | 14 | // Destructor |
kocemax | 2:006a2ddfabb6 | 15 | Ball::~Ball() |
kocemax | 2:006a2ddfabb6 | 16 | { |
kocemax | 2:006a2ddfabb6 | 17 | |
kocemax | 2:006a2ddfabb6 | 18 | } |
kocemax | 2:006a2ddfabb6 | 19 | |
kocemax | 2:006a2ddfabb6 | 20 | void Ball::drawBall(N5110 &lcd) |
kocemax | 2:006a2ddfabb6 | 21 | { |
kocemax | 2:006a2ddfabb6 | 22 | lcd.drawRect(_xBall,_yBall,2,2,FILL_BLACK); |
kocemax | 2:006a2ddfabb6 | 23 | } |
kocemax | 2:006a2ddfabb6 | 24 | |
kocemax | 2:006a2ddfabb6 | 25 | void Ball::moveBall() |
kocemax | 2:006a2ddfabb6 | 26 | { |
kocemax | 2:006a2ddfabb6 | 27 | |
kocemax | 2:006a2ddfabb6 | 28 | _xBall += _counterx; |
kocemax | 2:006a2ddfabb6 | 29 | _yBall -= _countery; |
kocemax | 2:006a2ddfabb6 | 30 | |
kocemax | 2:006a2ddfabb6 | 31 | if (_xBall > 82) |
kocemax | 2:006a2ddfabb6 | 32 | { |
kocemax | 2:006a2ddfabb6 | 33 | _counterx = -1; |
kocemax | 2:006a2ddfabb6 | 34 | } |
kocemax | 2:006a2ddfabb6 | 35 | else if( _xBall < 1) |
kocemax | 2:006a2ddfabb6 | 36 | { |
kocemax | 2:006a2ddfabb6 | 37 | _counterx = 1; |
kocemax | 2:006a2ddfabb6 | 38 | } |
kocemax | 2:006a2ddfabb6 | 39 | if (_yBall < 1) |
kocemax | 2:006a2ddfabb6 | 40 | { |
kocemax | 2:006a2ddfabb6 | 41 | _countery = -1; |
kocemax | 2:006a2ddfabb6 | 42 | } |
kocemax | 2:006a2ddfabb6 | 43 | else if (_yBall > 46) |
kocemax | 2:006a2ddfabb6 | 44 | { |
kocemax | 2:006a2ddfabb6 | 45 | _countery = 1; |
kocemax | 2:006a2ddfabb6 | 46 | } |
kocemax | 2:006a2ddfabb6 | 47 | } |
kocemax | 2:006a2ddfabb6 | 48 | |
kocemax | 2:006a2ddfabb6 | 49 | Vector2D Ball::get_ballPos(Gamepad &pad) |
kocemax | 2:006a2ddfabb6 | 50 | { |
kocemax | 2:006a2ddfabb6 | 51 | Vector2D posBall = {_xBall,_yBall}; |
kocemax | 2:006a2ddfabb6 | 52 | return posBall; |
kocemax | 2:006a2ddfabb6 | 53 | } |
kocemax | 2:006a2ddfabb6 | 54 | |
kocemax | 2:006a2ddfabb6 | 55 | bool Ball::endCondition(Gamepad &pad) |
kocemax | 2:006a2ddfabb6 | 56 | { |
kocemax | 2:006a2ddfabb6 | 57 | PlayerControl pl; |
kocemax | 2:006a2ddfabb6 | 58 | Vector2D posBall = get_ballPos(pad); |
kocemax | 2:006a2ddfabb6 | 59 | Vector2D posPad = pl.get_padPos(pad); |
kocemax | 2:006a2ddfabb6 | 60 | if (posBall.y < posPad.y) |
kocemax | 2:006a2ddfabb6 | 61 | { |
kocemax | 2:006a2ddfabb6 | 62 | return true; |
kocemax | 2:006a2ddfabb6 | 63 | } |
kocemax | 2:006a2ddfabb6 | 64 | else return false; |
kocemax | 2:006a2ddfabb6 | 65 | } |