Kostadin Chakarov / Mbed 2 deprecated el17kec

Dependencies:   mbed

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?

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