Kostadin Chakarov / Mbed 2 deprecated el17kec

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }