#include #include #include "PADDLE.H" static int PNum; Paddle::Paddle() { PNum++; if(PNum == 1) { PlayerNum = PNum; X = 205; X2 = X+50; Y = 20; Y2 = Y+20; Color = RED; AI = IsAI(); Top = true; } else if(PNum == 2) { PlayerNum = PNum; X = 205; X2 = X+50; Y = 440; Y2 = Y+20; Color = BLUE; AI = IsAI(); Top = false; } } bool Paddle::IsAI() { char temp; cout << "Is Player " << PlayerNum << " computer controlled? "; cin >> temp; if(temp == 'Y' || temp == 'y') return true; else return false; } void Paddle::MovePaddle(Ball B, const Paddle &P1, const Paddle &P2) { int var; if(AI) { Movement = CalculateMove(B,P1,P2); } else { var = getch(); if(PlayerNum == 1) { if(var == 77) Movement = RIGHT; else if(var == 75) Movement = LEFT; else Movement = STOP; } else if(PlayerNum == 2) { if(var == 97) Movement = LEFT; else if(var == 100) Movement = RIGHT; else Movement = STOP; } } if(Movement == RIGHT) { if(AI) { X += 3; X2 += 3; } else { X += 10; X2 += 10; } } else if(Movement == LEFT) { if(AI) { X -= 3; X2 -= 3; } else { X-= 10; X2 -= 10; } } if(X < 0) { X = 0; X2 = X+50; } else if(X2 > 640) { X2 = 640; X = X2-50; } } Move Paddle::CalculateMove(Ball B, const Paddle &Player1, const Paddle &Player2) { bool Exit = false; while(!Exit) { B.MoveBall(Player1.PaddleXCoor(),Player1.PaddleYCoor(),Player1.PaddleX2Coor(),Player1.PaddleY2Coor(),Player2.PaddleXCoor(),Player2.PaddleYCoor(),Player2.PaddleX2Coor(),Player2.PaddleY2Coor()); if(Top) { if(B.BallYCoor() < Y2+(B.BallRadius()*2)) Exit = true; } else { if(B.BallYCoor() > Y-(B.BallRadius()*2)) Exit = true; } } if(B.BallXCoor() >= X2) return RIGHT; else if(B.BallXCoor() <= X) return LEFT; else return STOP; }