Two player imu pong
Dependencies: 4DGL-uLCD-SE IMUfilter LSM9DS0 PinDetect mbed
Diff: ball.cpp
- Revision:
- 0:941225f01ccc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ball.cpp Thu Oct 22 16:50:22 2015 +0000 @@ -0,0 +1,183 @@ + +#include "ball.h" +//#include "tempModule.h" + + + +Ball::Ball(PinName pin) +{ + //tempSensor = new TempModule(pin); + setBaseVx(2.0); + setBaseVy(2.0); + setVySign(1); + setVxSign(1); + radius = 5; + setX(50); + setY(21); + } + +Ball::Ball(PinName pin, float Vx, float Vy, int rad,int xp, int yp) +{ + //tempSensor = new TempModule(pin , Vx, Vy); + setBaseVx(Vx); + setBaseVy(Vy); + setVxSign(1); + setVySign(1); + radius = rad; + setX(xp); + setY(yp); + + + } + +// set functions +void Ball::setX(int xp) +{ + x = xp; + } +void Ball::setY(int yp) +{ + y = yp; + + } +void Ball::setRand(int seed) +{ + srand(seed); + int random = (rand() % (118 - 2*radius)) + radius; + setX(random); + int random2 = (rand() % (127 - 2*radius)) + radius; + setY(random2); + + } +void Ball::setBaseVx(float Vx) +{ + basevx = Vx; + //tempSensor->setBaseVx(vxSign*Vx); + + } + + +void Ball::setBaseVy(float Vy) +{ + basevy = Vy; + //tempSensor->setBaseVy(Vy); + + } + +void Ball::setVxSign(int s) +{ + vxSign = s; + } + +void Ball::setVySign(int s) +{ + vySign = s; + + } + + +//get functions + +int Ball::getVx() +{ + return basevx; + } + +int Ball::getVy() +{ + return basevy; + } + +int Ball::getFutureX() +{ + return vxSign * getVx() + x ; + //return vxSign * tempSensor->getVx() + x ; + + } + +int Ball::getFutureY() +{ + return vySign * getVy() + y; + //return vySign * tempSensor->getVy() + y; + + } + +int Ball::getRadius() +{ + return radius; + } +//Member Functions + +void Ball::reverseXDirection() +{ + + vxSign = - vxSign; + + } +void Ball::reverseYDirection() +{ + vySign = -vySign; + + } +/* +void Ball::reset( int x, int y, int vx, int vy, uLCD_4DGL*) +{ + + setBaseVx(vx); + setBaseVy(vy); + uLCD.circle(x,y,radius,WHITE); + + + } + */ +void Ball::update(uLCD_4DGL *uLCD) +{ + uLCD->circle(x,y,radius,BLACK); + x = (int) getFutureX(); + y = (int) getFutureY(); + uLCD->circle(x,y,radius,WHITE); + + + } +/* +void Ball::dispTemp(uLCD_4DGL *uLCD) +{ + + float garbage = tempSensor->getVx(uLCD); + + } + */ +bool Ball::CheckHit() +{ bool hit = false; + /* + if ((getFutureX()<=radius+1)) + { + reverseXDirection(); + hit = true; + } + */ + if ((getFutureY()<=radius+1) || (getFutureY()>=126-radius)) + { + reverseYDirection(); + hit = true; + } + return hit; + + } +bool Ball::CheckLose() +{ + if ((getFutureX()>=126-radius)) + { + //vx = 0; + //vy = 0; + return true; + } + + if ((getFutureX() <= radius)) + { + return true; + } + else + {return false;} + } +