function canMove($x, $y)
 {
     $direcoes = diagonalMove($this->getPosX() - $x, $this->getPosY() - $y);
     if ($this->getCor() && $direcoes[1] < 0 || !$this->getCor() && $direcoes[1] > 0) {
         return True;
     }
 }
 public function jogaPeca($prevX, $prevY, $aftX, $aftY)
 {
     //Testa a condicao de se o campo de antes possui uma peca dentro dele.
     if (!PecaAbstrata::isValidPosition($prevX, $prevY) || $this->getPeca($prevX, $prevY) == NULL) {
         throw new TabuleiroException("O campo de origem nao tem peca nenhuma.");
     }
     if (!PecaAbstrata::isValidPosition($aftX, $aftY) || $this->getPeca($aftX, $aftY) !== NULL) {
         throw new TabuleiroException("O campo de destino ja esta ocupado.");
     }
     $direcoes = $this->isComivel($this->getPeca($prevX, $prevY));
     /**
      * testa se a direcao do movimento � possivel , de acordo com a peca que tem que ser
      * comida
      */
     $hasMove = False;
     $condicao1 = is_array($direcoes[0]) && PecaAbstrata::isValidPosition($direcoes[0][0], $direcoes[0][1]);
     $condicao2 = is_array($direcoes[1]) && PecaAbstrata::isValidPosition($direcoes[1][0], $direcoes[1][1]);
     $condicao3 = is_array($direcoes[2]) && PecaAbstrata::isValidPosition($direcoes[2][0], $direcoes[2][1]);
     $condicao4 = is_array($direcoes[3]) && PecaAbstrata::isValidPosition($direcoes[3][0], $direcoes[3][1]);
     if ($condicao1 && !$hasMove) {
         if ($direcoes[0][0] == $aftX && $direcoes[0][1] == $aftY) {
             $hasMove = True;
             $this->movePeca($prevX, $prevY, $aftX, $aftY);
             $this->decrementaPecas($aftX - 1, $aftY - 1);
             $PecaMorta = $this->getPeca($aftX - 1, $aftY - 1);
             $this->delPeca($aftX - 1, $aftY - 1);
             unset($PecaMorta);
         }
     }
     if ($condicao2 && !$hasMove) {
         if ($direcoes[1][0] == $aftX && $direcoes[1][1] == $aftY) {
             $hasMove = True;
             $this->movePeca($prevX, $prevY, $aftX, $aftY);
             $this->decrementaPecas($aftX + 1, $aftY - 1);
             $PecaMorta = $this->getPeca($aftX + 1, $aftY - 1);
             $this->delPeca($aftX + 1, $aftY - 1);
             unset($PecaMorta);
         }
     }
     if ($condicao3 && !$hasMove) {
         if ($direcoes[2][0] == $aftX && $direcoes[2][1] == $aftY) {
             $hasMove = True;
             $this->movePeca($prevX, $prevY, $aftX, $aftY);
             $PecaMorta = $this->getPeca($aftX - 1, $aftY + 1);
             $this->decrementaPecas($aftX - 1, $aftY + 1);
             $this->delPeca($aftX - 1, $aftY + 1);
             unset($PecaMorta);
         }
     }
     if ($condicao4 && !$hasMove) {
         if ($direcoes[3][0] == $aftX && $direcoes[3][1] == $aftY) {
             $hasMove = True;
             $this->movePeca($prevX, $prevY, $aftX, $aftY);
             $this->decrementaPecas($aftX + 1, $aftY + 1);
             $PecaMorta = $this->getPeca($aftX + 1, $aftY + 1);
             $this->delPeca($aftX + 1, $aftY + 1);
             unset($PecaMorta);
         }
     }
     if (($condicao1 || $condicao2 || $condicao3 || $condicao4) && !$hasMove) {
         throw new Exception("Erro , Deve comer a peca");
     } elseif (!$hasMove) {
         // Testa se o movimento eh possivel pelo numero de casas movidas
         $direcao_move = diagonalMove($aftX - $prevX, $aftY - $prevY);
         if ($this->canMove($prevX, $prevY, $aftX, $aftY)) {
             //Testa se o movimento esta na direcao que a peca pode ir
             echo "WOWOWOWWO\n";
             if ($this->getPeca($prevX, $prevY)->getCor() == BLACK && $direcao_move[1] > 0 || $this->getPeca($prevX, $prevY)->isDama()) {
                 $this->movePeca($prevX, $prevY, $aftX, $aftY);
             } else {
                 if ($this->getPeca($prevX, $prevY)->getCor() == WHITE && $direcao_move[1] < 0 || $this->getPeca($prevX, $prevY)->isDama()) {
                     $this->movePeca($prevX, $prevY, $aftX, $aftY);
                 } else {
                     throw new Exception("Erro , Mova a peca apenas para frente");
                 }
             }
         } else {
             throw new Exception("Erro , Nao pode mover tantas casas");
         }
     }
 }