

import javax.swing.*;
import javax.swing.JOptionPane;

public class Inimigos extends Thread {
    
    private int PosX, PosY;
    private int PasX, PasY;
    private int TamX, TamY;
    private JLabel Jogador, Monstro;
    private int Passo = (int)(Math.random()*10)+1;
    private int Sorte = (int)(Math.random()*10)+1;
    
    public Inimigos(int TamX, int TamY, JLabel Monstro, JLabel Jogador) {
        
        PosX = 0; PasX = Passo;
        PosY = 0; PasY = Passo;
        this.TamX = TamX;
        this.TamY = TamY;
        this.Monstro = Monstro;
        this.Jogador = Jogador;
        
        
        PosX = (int)(Math.random()*(TamX-Monstro.getWidth()-Jogador.getWidth()))+Jogador.getWidth();
        PosY = (int)(Math.random()*(TamY-Monstro.getHeight()-Jogador.getHeight()))+Jogador.getHeight();
        
    }
    
    public void run(){
        boolean Continua = true;
        while(Continua){
            
            PosX += PasX;
            PosY += PasY;
            
            if(PosX<1){
                PasX = Passo;
            }else{
                if(PosX>TamX-Monstro.getWidth()){
                    PasX = -Passo;
                }
            }
            
            if(PosY<1){
                PasY = Passo;
            }else{
                if(PosY>TamY-Monstro.getHeight()){
                    PasY = -Passo;
                }
            }
            
            
            if(Sorte<3){ // Movimento Aleatório
                if(Math.random()*10>9){
                    PasY *= -1;
                }
                
                if(Math.random()*10>9){
                    PasX *= -1;
                }
            }else{
                if(Sorte>6){ // Busca o Jogador
                    if(Jogador.getX()<PosX){
                        PasX = -1;
                    } else{
                        PasX = 1;
                    }
                    if(Jogador.getY()<PosY){
                        PasY = -1;
                    } else{
                        PasY = 1;
                    }
                }
            }
            
            Monstro.setLocation(PosX, PosY);
            
            if(AnalisaCaptura()){
                
                JOptionPane.showMessageDialog(null, "Você Morreu", "Aviso", JOptionPane.INFORMATION_MESSAGE);
                
                System.exit(0);
                
            }
            
            try{
                
                this.sleep(100);
                
            }catch(Exception e){}
            
        }
    }
    
    private boolean AnalisaCaptura(){
        boolean Capturou = false;
        
        int IniMonstroX = PosX+5;
        int IniMonstroY = PosY+5;
        int FimMonstroX = PosX+Monstro.getWidth()-5;
        int FimMonstroY = PosY+Monstro.getHeight()-5;
        
        int IniJogadorX = Jogador.getX()+25;
        int IniJogadorY = Jogador.getY()+25;
        int FimJogadorX = IniJogadorX+Jogador.getWidth()-25;
        int FimJogadorY = IniJogadorY+Jogador.getHeight()-25;
        
        // teste do canto superior esquerdo do Jogador no Monstro
        if(IniMonstroX<IniJogadorX){
            if(FimMonstroX>IniJogadorX){
                if(IniMonstroY<IniJogadorY){
                    if(FimMonstroY>IniJogadorY){
                        Capturou = true;
                    }
                }
            }
        }
        
        // teste do canto superior direito do Jogador no Monstro
        if(IniMonstroX>FimJogadorX){
            if(FimMonstroX<FimJogadorX){
                if(IniMonstroY<IniJogadorY){
                    if(FimMonstroY>FimJogadorY){
                        Capturou = true;
                    }
                }
            }
        }
        
        // teste do canto inferior esquerdo do Jogador no Monstro
        if(IniMonstroX<IniJogadorX){
            if(FimMonstroX>IniJogadorX){
                if(IniMonstroY<IniJogadorY){
                    if(FimMonstroY>FimJogadorY){
                        Capturou = true;
                    }
                }
            }
        }
        
        // teste do canto inferior esquerdo do Jogador no Monstro
        if(IniMonstroX<FimJogadorX){
            if(FimMonstroX>FimJogadorX){
                if(IniMonstroY<FimJogadorY){
                    if(FimMonstroY>FimJogadorY){
                        Capturou = true;
                    }
                }
            }
        }
        
        return Capturou;
    }
}
