class HunterGhost{
  int x;
  int y;
  int xold;
  int yold;
  int xvol;
  int yvol;
  int life;
  double feet;
  int direction;
  HunterGhost(int xpos, int ypos, int lifebar){

    feet =0;
    x = xpos;
    y = ypos;
    life = lifebar;
    xold = x;
    yold = y;
    xvol = 5;
    yvol = 0;
    direction = 0;
  }
  void display(int state){
    colorMode(RGB);
    this.move();
    feet = (double) sin((float)(((x+y)%14)/2));
    //print( x + "  " + y + "  " + xold + "   " + yold + "\n");
    //fill(int(random(255)),int(random(255)),int(random(255)));

if(xold == x && yold == y){
      fill(0,0,255);
    ellipse(x,y, 30,30);
    rect(x-15,y,30,15);
    triangle(x-15,y+15,x-15,y+22,(int)(x-8+(3*feet)),y+15);
    triangle(x+15,y+15,x+15,y+22,(int)(x+8-(3*feet)),y+15);
    triangle((int)(x-8+(3*feet)),y+15,(int)(x-4+(4*feet)),y+22,x,y+15);
    triangle((int)(x+8-(3*feet)),y+15,(int)(x+4-(4*feet)),y+22,x,y+15);
    //stroke(100);
    //line(x,y,x,y+50);
    //noStroke();
      fill(255,255,255);
      ellipse(x-6,y-3,6,6);
      ellipse(x+6,y-3,6,6);
      stroke(255);
      line(x-12,y+10,x-8,y+3);
      line(x-8,y+3,x-4,y+10);
      line(x+4,y+10,x,y+3);
      line(x-4,y+10,x,y+3);
      line(x+8,y+3,x+4,y+10);
      line(x+12,y+10,x+8,y+3);
      noStroke();
      
   
  }else{


    fill(0,255,255);
    ellipse(x,y, 30,30);
    rect(x-15,y,30,15);
    triangle(x-15,y+15,x-15,y+22,(int)(x-8+(3*feet)),y+15);
    triangle(x+15,y+15,x+15,y+22,(int)(x+8-(3*feet)),y+15);
    triangle((int)(x-8+(3*feet)),y+15,(int)(x-4+(4*feet)),y+22,x,y+15);
    triangle((int)(x+8-(3*feet)),y+15,(int)(x+4-(4*feet)),y+22,x,y+15);
    //stroke(100);
    //line(x,y,x,y+50);
    //noStroke();
    if (yold > y){//goes up
      fill(255);
      ellipse(x-6,y-4,12,12);
      ellipse(x+6,y-4,12,12);
      fill(0,0,255);
      ellipse(x-6,y-7,6,6);
      ellipse(x+6,y-7,6,6);
    }else if(yold < y){// goes down
     fill(255);
      ellipse(x-6,y+4,12,12);
      ellipse(x+6,y+4,12,12);
      fill(0,0,255);
      ellipse(x-6,y+7,6,6);
      ellipse(x+6,y+7,6,6);
    }else if(xold < x){ //goes right
      fill(255);
      ellipse(x-3,y,12,12);
      ellipse(x+9,y,12,12);
      fill(0,0,255);
      ellipse(x,y,6,6);
      ellipse(x+12,y,6,6);
    }else if(xold > x){ // goes left
      fill(255);
      ellipse(x-9,y,12,12);
      ellipse(x+3,y,12,12);
      fill(0,0,255);
      ellipse(x-12,y,6,6);
      ellipse(x,y,6,6);
    }
  }
    xold =x;
    yold =y;
    
    
    
    
    }
 void move(){
  /* if(keyPressed) {
     if (keyCode == UP){
         yvol =-5;
         xvol = 0;
     }else if (keyCode == DOWN){
         yvol = 5;
         xvol = 0;
     }else if (keyCode == RIGHT){
         yvol = 0;
         xvol = 5;
     }else if (keyCode == LEFT){
         yvol = 0;
         xvol =-5;
     }
   }  */   
  // print(x +"  " +y +"\n");
 /* if(int(random(0,5))< 3){
        
      if (x%50 == y%50 && x%50 == 0 && x>50 && x< 550 && y>50 && y<750){
     if ((xdiff > ydiff) && (this.x > p1.x)){
       xvol = -5;
       yvol = 0;
     }else if((xdiff > ydiff) && (this.x < p1.x)){
       xvol = 5;
       yvol = 0;
     }else if((xdiff < ydiff) && (this.y < p1.y)){
       xvol = 0;
       yvol = 5;
     }else if ((xdiff < ydiff) && (this.y > p1.y)){
       xvol = 0;
       yvol = -5;
     }}
   }
   */
   

   if (x%50 == y%50 && x%50 == 0 && x>50 && x< 550 && y>50 && y<750){
        int i =((this.y-25)/50);
       int j =((this.x-25)/50);
       int xdiff = abs(this.x - p1.x);
       int ydiff = abs(this.y - p1.y); 
       xdiff++;
       ydiff++;
       
     
       int xdir = 2*(xdiff / abs(xdiff));
       int ydir = 2*(ydiff / abs(ydiff));
       if(xdir > ydir){
         ydir /=2;
       }else if(xdir < ydir){
         xdir /=2;
       }
       
       
       int count = 0; 
       
       while(true){
       if (b1.returnDirection(i,j-1) == 0){
       count += 1;
          if (int(random(0,4 - xdir )) == 0){ 
             xvol = -5;
             yvol = 0;
             break;
      }
     } if(b1.returnDirection(i,j+1) == 0){
       count += 1;
           if (int(random(0,3 + xdir)) == 0){
           xvol = 5;
           yvol = 0;
           break;
           }
     } if(b1.returnDirection(i+1,j) == 0){
       count += 1;
           if (int(random(0,2 + ydir)) == 0){
           xvol = 0;
           yvol = 5;
           break;
           }
     } if (b1.returnDirection(i-1,j) == 0){
       count += 1;
           if (int(random(0,2 - ydir)) == 0){
           xvol = 0;
           yvol = -5;
           break;
           }
     }if(count == 0){
       xvol =0;
       yvol =0;
       break;
     }
     }
     if (b1.returnDirection(i,j) == 1){
     xvol= 0;
     yvol= 0;
   }
   }
   
   
   x += xvol;
   y += yvol; 
 //if((this.x%50 == 0 && this.x !=0 && this.x != 600 )
  //  && (this.y%50 == 0 && this.y !=0 && this.y != 800 )){
  //        int i =((this.y-50)/50);
  //        int j =((this.x-50)/50); 
  //        if( b1.dots[i][j] == 1){             
  //             b1.dots[i][j] = 0;
  //         }
  //  }     
     
   if (x>599){
     x = 5;
   }
   if (x<1){
     x = 595;
   }
   if(y > 799){
     y= 5;
   }
   if (y < 1){
     y= 795;
 }
 }
}
