Kostadin Chakarov / Mbed 2 deprecated el17kec

Dependencies:   mbed

Committer:
kocemax
Date:
Tue Mar 26 09:16:35 2019 +0000
Revision:
5:12c179da4788
Parent:
4:0e01cbb95434
Child:
6:39bda45efeed
Made a struct to store centerpoints, from which I can generate the map by storing the x and y in a struct within a vector. Now need to introduce collision between bricks and ball.

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 4:0e01cbb95434 4 PlayerControl pl;
kocemax 4:0e01cbb95434 5
kocemax 3:fe856d0890ee 6 int g_xBall = WIDTH/2; // draw ball in the middle of the columns initially
kocemax 3:fe856d0890ee 7 int g_yBall = HEIGHT - GAP - 2; // draw ball close to the bottom of the LCD
kocemax 2:006a2ddfabb6 8
kocemax 2:006a2ddfabb6 9 // Constructor
kocemax 2:006a2ddfabb6 10 Ball::Ball()
kocemax 2:006a2ddfabb6 11 {
kocemax 5:12c179da4788 12 _counterx = 1;
kocemax 5:12c179da4788 13 _countery = 1;
kocemax 2:006a2ddfabb6 14 }
kocemax 2:006a2ddfabb6 15
kocemax 2:006a2ddfabb6 16 // Destructor
kocemax 2:006a2ddfabb6 17 Ball::~Ball()
kocemax 2:006a2ddfabb6 18 {
kocemax 2:006a2ddfabb6 19
kocemax 2:006a2ddfabb6 20 }
kocemax 2:006a2ddfabb6 21
kocemax 2:006a2ddfabb6 22 void Ball::drawBall(N5110 &lcd)
kocemax 2:006a2ddfabb6 23 {
kocemax 4:0e01cbb95434 24 lcd.drawRect(g_xBall,g_yBall,1,1,FILL_BLACK);
kocemax 2:006a2ddfabb6 25 }
kocemax 2:006a2ddfabb6 26
kocemax 2:006a2ddfabb6 27 void Ball::moveBall()
kocemax 2:006a2ddfabb6 28 {
kocemax 2:006a2ddfabb6 29
kocemax 5:12c179da4788 30 g_xBall += _counterx;
kocemax 5:12c179da4788 31 g_yBall -= _countery;
kocemax 2:006a2ddfabb6 32
kocemax 4:0e01cbb95434 33 if (g_xBall > 83)
kocemax 2:006a2ddfabb6 34 {
kocemax 5:12c179da4788 35 _counterx = -1;
kocemax 3:fe856d0890ee 36 }
kocemax 3:fe856d0890ee 37 else if(g_xBall < 1)
kocemax 3:fe856d0890ee 38 {
kocemax 5:12c179da4788 39 _counterx = 1;
kocemax 2:006a2ddfabb6 40 }
kocemax 3:fe856d0890ee 41 if (g_yBall < 1)
kocemax 3:fe856d0890ee 42 {
kocemax 5:12c179da4788 43 _countery = -1;
kocemax 3:fe856d0890ee 44 }
kocemax 4:0e01cbb95434 45 else if (g_yBall > 47)
kocemax 2:006a2ddfabb6 46 {
kocemax 5:12c179da4788 47 _countery = 1;
kocemax 2:006a2ddfabb6 48 }
kocemax 3:fe856d0890ee 49 }
kocemax 3:fe856d0890ee 50
kocemax 3:fe856d0890ee 51 void Ball::hitPad(Gamepad &pad)
kocemax 3:fe856d0890ee 52 {
kocemax 3:fe856d0890ee 53 Vector2D posBall = get_ballPos(pad);
kocemax 3:fe856d0890ee 54 Vector2D posPad = pl.get_padPos(pad);
kocemax 4:0e01cbb95434 55 if (posBall.y == posPad.y - 1 && (posBall.x >= posPad.x && posBall.x <= posPad.x + 12))
kocemax 3:fe856d0890ee 56 {
kocemax 5:12c179da4788 57 _countery = !_countery;
kocemax 5:12c179da4788 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 4:0e01cbb95434 70 void Ball::endCondition(Gamepad &pad, N5110 &lcd)
kocemax 2:006a2ddfabb6 71 {
kocemax 2:006a2ddfabb6 72 Vector2D posBall = get_ballPos(pad);
kocemax 2:006a2ddfabb6 73 Vector2D posPad = pl.get_padPos(pad);
kocemax 3:fe856d0890ee 74 if (posBall.y > posPad.y)
kocemax 2:006a2ddfabb6 75 {
kocemax 4:0e01cbb95434 76 while (1)
kocemax 4:0e01cbb95434 77 {
kocemax 4:0e01cbb95434 78 lcd.clear();
kocemax 4:0e01cbb95434 79 lcd.printString("You Lost",17,2);
kocemax 4:0e01cbb95434 80 lcd.printString("Press A",20,3);
kocemax 4:0e01cbb95434 81 lcd.printString("to restart",12,4);
kocemax 4:0e01cbb95434 82 wait(0.1);
kocemax 4:0e01cbb95434 83 lcd.refresh();
kocemax 4:0e01cbb95434 84 if (pad.check_event(Gamepad::A_PRESSED) == true)
kocemax 4:0e01cbb95434 85 {
kocemax 4:0e01cbb95434 86 resetGame();
kocemax 4:0e01cbb95434 87 break;
kocemax 4:0e01cbb95434 88 }
kocemax 4:0e01cbb95434 89 }
kocemax 2:006a2ddfabb6 90 }
kocemax 4:0e01cbb95434 91 }
kocemax 4:0e01cbb95434 92
kocemax 4:0e01cbb95434 93 void Ball::resetGame()
kocemax 4:0e01cbb95434 94 {
kocemax 4:0e01cbb95434 95 g_xBall = WIDTH/2;
kocemax 4:0e01cbb95434 96 g_yBall = HEIGHT - GAP - 2;
kocemax 5:12c179da4788 97 _counterx = 1;
kocemax 5:12c179da4788 98 _countery = 1;
kocemax 5:12c179da4788 99 g_xBall += _counterx;
kocemax 5:12c179da4788 100 g_yBall -= _countery;
kocemax 4:0e01cbb95434 101 pl.padReset();
kocemax 2:006a2ddfabb6 102 }