/// take home test.
String title="Let's Play Tennis!!";
String author="Salvatore Randazzo, CST112, Take Home Test.";

int counter= 0;
int score=0;
int w = 50;
int x = 50;
int y = 25;
int z = 25;

/// table boundaries, ball, salXY
float left=50, top=200, right=750, bottom=550;
float ballX=80, ballY=300, ballDX=80, ballDY=9; ;
float ballR, ballG, ballB;
float salX = 600;
float salY = 400;
float birdX=750, birdY=150, birdDX=3, birdDY=2;
float dogX=150, dogY=600, dogDX=2, dogDY=2;

void setup (){      /// displays background, & tennis area
  size ( 800, 700 ); 
 reset(); 
}
void reset() {                /// random ball
  ballDX= random (10);
  ballDY= random (4);
  ballR=  random (255);
  ballG=  random (255);
  ballB=  random (255);
 
}
void draw(){                 /// displays title and name
  background ( 50, 250, 100);
  fill (0);
  textSize (20);
  text ( title, width/4, 60 );
  text ( author, 20, height-30 );
  rectMode (CORNERS);
  fill ( 0, 200, 0);
  rect ( 70, 200, 650, 350); /// dispalys field
  rect (  left, top, right, bottom);
  fill ( 254, 255, 8 );
  stroke (10);
  line (400, 200, 400, 550);
  dog(w, x, y, z);
  bird();
  
/// Draw Sal
  fill( 255, 255, 0 );
  rectMode( CENTER );
  rect( salX, salY, 50, 80 );              /// draws body
  fill( 255, 200, 150 );
  ellipse( salX, salY-80/2-30/2, 30, 30 ); /// draws head
  eye((salX-6),(salY-55));
  eye((salX+6),(salY-55));
  ball();
}

void eye(float X, float Y){                /// draws eyes
  fill ( 8, 220, 255 );
  ellipse ( X,Y,5,5 );
  fill ( 0,0,150 );
  ellipse ( X,Y,2,2 );
  leg ( salX+15, salY+45 );
  leg ( salX-15, salY+45 );

}

void leg (float salX, float salY) {       /// draws legs
   fill (0, 0, 255);
   rect (salX, salY, 5, 10);
}

void ball() {
  noStroke();    
  ellipseMode(CENTER);
  if (ballX<left-5|| ballX>right-10) ballDX= -ballDX;
  if (ballY<top || ballY>bottom) ballDY= -ballDY;
  ballX += ballDX;
  ballY += ballDY;
  fill( ballR, ballG, ballB );   
  ellipse(ballX-10, ballY-10, y, y );   ////draws ball
  

}


void keyPressed(){                   /// key press to cancel
if ( key =='q' ) exit();
if ( key =='r' ) reset();
}

void bird() {
  /// Move & draw bird.
  noStroke();
  birdX=  birdX+= birdDX;
  birdY=  birdY+= birdDY;
  if (birdX<left+30 || birdX>right+100)  birdDX= -birdDX;
  if (birdY<top || birdY>bottom)    birdDY= -birdDY;
  fill(0, 0, 255);
  triangle( birdX-90, birdY, birdX-40, birdY-20, birdX-40, birdY+20 );
}
void dog(float w, float x, float y, float z ) {
  ////move and draw a dog
  fill(203, 143, 10);
  dogX=  dogX + dogDX;
  dogY=  dogY + dogDY;
  if (dogX<left || dogX>right-90)    dogDX= -dogDX;
  if (dogY<top || dogY>bottom)   dogDY= -dogDY;
  
  rectMode(CENTER);
  rect(dogX+40, dogY+20, y+60, z);          /// dog's body
  rect(dogX+85, dogY, y+10, z);             /// dog's head
  rect(dogX-10, dogY, y-10, z-10);          /// dog's tail
  fill(255); 
  ellipse(dogX+95, dogY, y-15, 7);          /// dog's eye
  dogleg(x+100, y-100);
}

void dogleg(float x, float y) {
  /// draw one leg
  fill(203, 143, 10);                      /// dog's color
  rect(dogX, dogY+40, 7, 20);             /// draw left leg of dog
  rect(dogX+80, dogY+40, 7, 20);          /// draw right leg of dog
  stroke(3);
  strokeWeight(1);
  line(dogX+80, dogY+30, dogX+90, dogY+50);
  line(dogX-10, dogY-10, dogX+10, dogY+50);
}
