player 1

Dependencies:   4DGL-uLCD-SE PinDetect SparkfunAnalogJoystick mbed-rtos mbed SDFileSystem

Fork of 4180FinalLab by Rishi Bhargava

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers paddle.cpp Source File

paddle.cpp

00001 #include "paddle.h"
00002 
00003 Paddle::Paddle(uint8_t initx, uint8_t inity, uint8_t olength, uint8_t owidth){
00004     x = initx;
00005     y = inity;
00006     length = olength;
00007     width = owidth;
00008     if (y < 100) {
00009         bottom = false;
00010     }
00011     else {
00012         bottom = true;
00013     }
00014 }
00015 
00016 void Paddle::setLimits(uint8_t left, uint8_t right){
00017     leftLim = left;
00018     rightLim = right;
00019 }
00020 
00021 void Paddle::setMaxMove(uint8_t amt){
00022     maxMove = amt;
00023 }
00024 
00025 uint8_t Paddle::getX(){
00026     return x;
00027 }
00028 
00029 void Paddle::setX(uint8_t newx){
00030     x = newx;
00031 }
00032 
00033 void Paddle::move(float amt){
00034     if (x + amt*maxMove + length > rightLim)
00035         x = rightLim - length;
00036     else if (x + amt*maxMove < leftLim)
00037         x = leftLim;
00038     else
00039         x = x + amt*maxMove;
00040 }
00041 
00042 bool Paddle::checkHit(uint8_t ballX, uint8_t ballY, uint8_t size){
00043     if (ballX+size/2 >= x && ballX+size/2 <= x+length){
00044         if (bottom && (ballY+size >= y-width && ballY <= y-width)){
00045             return true;
00046         }
00047         else if (!bottom && (ballY+size >= y+width && ballY <= y+width)){
00048             return true;
00049         }
00050     }
00051     return false;
00052 }
00053 
00054 uint8_t Paddle::returnAngle(uint8_t ballX, uint8_t size){
00055     uint8_t dist = abs((ballX + size/2) - (x + length/2));
00056     if (dist < 5)
00057         return 0;
00058     else if (dist < 10)
00059         return 1;
00060     else if (dist < 15)
00061         return 2;
00062     else
00063         return 3;
00064 }
00065 
00066 bool Paddle::returnDir(uint8_t ballX, uint8_t size){
00067     if ((ballX+size/2) > (x+length/2)){
00068         return true;
00069     }
00070     else {
00071         return false;
00072     }
00073 }
00074 
00075 void Paddle::reset(uint8_t initx, uint8_t inity){
00076     x = initx;
00077     y = inity;
00078 }