Kostadin Chakarov / Mbed 2 deprecated el17kec

Dependencies:   mbed

Committer:
kocemax
Date:
Sat Mar 23 12:07:33 2019 +0000
Revision:
4:0e01cbb95434
Parent:
3:fe856d0890ee
Child:
5:12c179da4788
Added a reset feature, if button A is pressed after the game is over. Need to find a way to draw the targets for the game.

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