Two player imu pong

Dependencies:   4DGL-uLCD-SE IMUfilter LSM9DS0 PinDetect mbed

Committer:
rrr93
Date:
Thu Oct 22 16:50:22 2015 +0000
Revision:
0:941225f01ccc
qewrt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rrr93 0:941225f01ccc 1
rrr93 0:941225f01ccc 2 #include "ball.h"
rrr93 0:941225f01ccc 3 //#include "tempModule.h"
rrr93 0:941225f01ccc 4
rrr93 0:941225f01ccc 5
rrr93 0:941225f01ccc 6
rrr93 0:941225f01ccc 7 Ball::Ball(PinName pin)
rrr93 0:941225f01ccc 8 {
rrr93 0:941225f01ccc 9 //tempSensor = new TempModule(pin);
rrr93 0:941225f01ccc 10 setBaseVx(2.0);
rrr93 0:941225f01ccc 11 setBaseVy(2.0);
rrr93 0:941225f01ccc 12 setVySign(1);
rrr93 0:941225f01ccc 13 setVxSign(1);
rrr93 0:941225f01ccc 14 radius = 5;
rrr93 0:941225f01ccc 15 setX(50);
rrr93 0:941225f01ccc 16 setY(21);
rrr93 0:941225f01ccc 17 }
rrr93 0:941225f01ccc 18
rrr93 0:941225f01ccc 19 Ball::Ball(PinName pin, float Vx, float Vy, int rad,int xp, int yp)
rrr93 0:941225f01ccc 20 {
rrr93 0:941225f01ccc 21 //tempSensor = new TempModule(pin , Vx, Vy);
rrr93 0:941225f01ccc 22 setBaseVx(Vx);
rrr93 0:941225f01ccc 23 setBaseVy(Vy);
rrr93 0:941225f01ccc 24 setVxSign(1);
rrr93 0:941225f01ccc 25 setVySign(1);
rrr93 0:941225f01ccc 26 radius = rad;
rrr93 0:941225f01ccc 27 setX(xp);
rrr93 0:941225f01ccc 28 setY(yp);
rrr93 0:941225f01ccc 29
rrr93 0:941225f01ccc 30
rrr93 0:941225f01ccc 31 }
rrr93 0:941225f01ccc 32
rrr93 0:941225f01ccc 33 // set functions
rrr93 0:941225f01ccc 34 void Ball::setX(int xp)
rrr93 0:941225f01ccc 35 {
rrr93 0:941225f01ccc 36 x = xp;
rrr93 0:941225f01ccc 37 }
rrr93 0:941225f01ccc 38 void Ball::setY(int yp)
rrr93 0:941225f01ccc 39 {
rrr93 0:941225f01ccc 40 y = yp;
rrr93 0:941225f01ccc 41
rrr93 0:941225f01ccc 42 }
rrr93 0:941225f01ccc 43 void Ball::setRand(int seed)
rrr93 0:941225f01ccc 44 {
rrr93 0:941225f01ccc 45 srand(seed);
rrr93 0:941225f01ccc 46 int random = (rand() % (118 - 2*radius)) + radius;
rrr93 0:941225f01ccc 47 setX(random);
rrr93 0:941225f01ccc 48 int random2 = (rand() % (127 - 2*radius)) + radius;
rrr93 0:941225f01ccc 49 setY(random2);
rrr93 0:941225f01ccc 50
rrr93 0:941225f01ccc 51 }
rrr93 0:941225f01ccc 52 void Ball::setBaseVx(float Vx)
rrr93 0:941225f01ccc 53 {
rrr93 0:941225f01ccc 54 basevx = Vx;
rrr93 0:941225f01ccc 55 //tempSensor->setBaseVx(vxSign*Vx);
rrr93 0:941225f01ccc 56
rrr93 0:941225f01ccc 57 }
rrr93 0:941225f01ccc 58
rrr93 0:941225f01ccc 59
rrr93 0:941225f01ccc 60 void Ball::setBaseVy(float Vy)
rrr93 0:941225f01ccc 61 {
rrr93 0:941225f01ccc 62 basevy = Vy;
rrr93 0:941225f01ccc 63 //tempSensor->setBaseVy(Vy);
rrr93 0:941225f01ccc 64
rrr93 0:941225f01ccc 65 }
rrr93 0:941225f01ccc 66
rrr93 0:941225f01ccc 67 void Ball::setVxSign(int s)
rrr93 0:941225f01ccc 68 {
rrr93 0:941225f01ccc 69 vxSign = s;
rrr93 0:941225f01ccc 70 }
rrr93 0:941225f01ccc 71
rrr93 0:941225f01ccc 72 void Ball::setVySign(int s)
rrr93 0:941225f01ccc 73 {
rrr93 0:941225f01ccc 74 vySign = s;
rrr93 0:941225f01ccc 75
rrr93 0:941225f01ccc 76 }
rrr93 0:941225f01ccc 77
rrr93 0:941225f01ccc 78
rrr93 0:941225f01ccc 79 //get functions
rrr93 0:941225f01ccc 80
rrr93 0:941225f01ccc 81 int Ball::getVx()
rrr93 0:941225f01ccc 82 {
rrr93 0:941225f01ccc 83 return basevx;
rrr93 0:941225f01ccc 84 }
rrr93 0:941225f01ccc 85
rrr93 0:941225f01ccc 86 int Ball::getVy()
rrr93 0:941225f01ccc 87 {
rrr93 0:941225f01ccc 88 return basevy;
rrr93 0:941225f01ccc 89 }
rrr93 0:941225f01ccc 90
rrr93 0:941225f01ccc 91 int Ball::getFutureX()
rrr93 0:941225f01ccc 92 {
rrr93 0:941225f01ccc 93 return vxSign * getVx() + x ;
rrr93 0:941225f01ccc 94 //return vxSign * tempSensor->getVx() + x ;
rrr93 0:941225f01ccc 95
rrr93 0:941225f01ccc 96 }
rrr93 0:941225f01ccc 97
rrr93 0:941225f01ccc 98 int Ball::getFutureY()
rrr93 0:941225f01ccc 99 {
rrr93 0:941225f01ccc 100 return vySign * getVy() + y;
rrr93 0:941225f01ccc 101 //return vySign * tempSensor->getVy() + y;
rrr93 0:941225f01ccc 102
rrr93 0:941225f01ccc 103 }
rrr93 0:941225f01ccc 104
rrr93 0:941225f01ccc 105 int Ball::getRadius()
rrr93 0:941225f01ccc 106 {
rrr93 0:941225f01ccc 107 return radius;
rrr93 0:941225f01ccc 108 }
rrr93 0:941225f01ccc 109 //Member Functions
rrr93 0:941225f01ccc 110
rrr93 0:941225f01ccc 111 void Ball::reverseXDirection()
rrr93 0:941225f01ccc 112 {
rrr93 0:941225f01ccc 113
rrr93 0:941225f01ccc 114 vxSign = - vxSign;
rrr93 0:941225f01ccc 115
rrr93 0:941225f01ccc 116 }
rrr93 0:941225f01ccc 117 void Ball::reverseYDirection()
rrr93 0:941225f01ccc 118 {
rrr93 0:941225f01ccc 119 vySign = -vySign;
rrr93 0:941225f01ccc 120
rrr93 0:941225f01ccc 121 }
rrr93 0:941225f01ccc 122 /*
rrr93 0:941225f01ccc 123 void Ball::reset( int x, int y, int vx, int vy, uLCD_4DGL*)
rrr93 0:941225f01ccc 124 {
rrr93 0:941225f01ccc 125
rrr93 0:941225f01ccc 126 setBaseVx(vx);
rrr93 0:941225f01ccc 127 setBaseVy(vy);
rrr93 0:941225f01ccc 128 uLCD.circle(x,y,radius,WHITE);
rrr93 0:941225f01ccc 129
rrr93 0:941225f01ccc 130
rrr93 0:941225f01ccc 131 }
rrr93 0:941225f01ccc 132 */
rrr93 0:941225f01ccc 133 void Ball::update(uLCD_4DGL *uLCD)
rrr93 0:941225f01ccc 134 {
rrr93 0:941225f01ccc 135 uLCD->circle(x,y,radius,BLACK);
rrr93 0:941225f01ccc 136 x = (int) getFutureX();
rrr93 0:941225f01ccc 137 y = (int) getFutureY();
rrr93 0:941225f01ccc 138 uLCD->circle(x,y,radius,WHITE);
rrr93 0:941225f01ccc 139
rrr93 0:941225f01ccc 140
rrr93 0:941225f01ccc 141 }
rrr93 0:941225f01ccc 142 /*
rrr93 0:941225f01ccc 143 void Ball::dispTemp(uLCD_4DGL *uLCD)
rrr93 0:941225f01ccc 144 {
rrr93 0:941225f01ccc 145
rrr93 0:941225f01ccc 146 float garbage = tempSensor->getVx(uLCD);
rrr93 0:941225f01ccc 147
rrr93 0:941225f01ccc 148 }
rrr93 0:941225f01ccc 149 */
rrr93 0:941225f01ccc 150 bool Ball::CheckHit()
rrr93 0:941225f01ccc 151 { bool hit = false;
rrr93 0:941225f01ccc 152 /*
rrr93 0:941225f01ccc 153 if ((getFutureX()<=radius+1))
rrr93 0:941225f01ccc 154 {
rrr93 0:941225f01ccc 155 reverseXDirection();
rrr93 0:941225f01ccc 156 hit = true;
rrr93 0:941225f01ccc 157 }
rrr93 0:941225f01ccc 158 */
rrr93 0:941225f01ccc 159 if ((getFutureY()<=radius+1) || (getFutureY()>=126-radius))
rrr93 0:941225f01ccc 160 {
rrr93 0:941225f01ccc 161 reverseYDirection();
rrr93 0:941225f01ccc 162 hit = true;
rrr93 0:941225f01ccc 163 }
rrr93 0:941225f01ccc 164 return hit;
rrr93 0:941225f01ccc 165
rrr93 0:941225f01ccc 166 }
rrr93 0:941225f01ccc 167 bool Ball::CheckLose()
rrr93 0:941225f01ccc 168 {
rrr93 0:941225f01ccc 169 if ((getFutureX()>=126-radius))
rrr93 0:941225f01ccc 170 {
rrr93 0:941225f01ccc 171 //vx = 0;
rrr93 0:941225f01ccc 172 //vy = 0;
rrr93 0:941225f01ccc 173 return true;
rrr93 0:941225f01ccc 174 }
rrr93 0:941225f01ccc 175
rrr93 0:941225f01ccc 176 if ((getFutureX() <= radius))
rrr93 0:941225f01ccc 177 {
rrr93 0:941225f01ccc 178 return true;
rrr93 0:941225f01ccc 179 }
rrr93 0:941225f01ccc 180 else
rrr93 0:941225f01ccc 181 {return false;}
rrr93 0:941225f01ccc 182 }
rrr93 0:941225f01ccc 183