

import java.net.*;
import java.applet.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;

public class TelaJogo extends JFrame {
    
    private JLabel Jogador;
    private JPanel paJogo;
    
         
    private int TamTelaX = 800, TamTelaY = 600, NumIni = 6;
    
    private int PosX, PosY;
    private int VelX = 5, VelY = 5;
    private char Lado = 'D';
    
    private String DirRecursos = "H:\\www\\minicurso\\Recursos\\";
    private String VetRecursos[] = {"Monstro.gif", "Algo.gif"};
    
    private AudioClip Disparo, Explosao; // Efeitos Especiais
    
    private Inimigos VetInimigos[] = new Inimigos[NumIni];
    private JLabel VetMonstros[] = new JLabel[NumIni];
    
    private JLabel Bala = new JLabel();
    private Tiro tir;

    
    public TelaJogo() {
        
        initComponents();
        
        setSize(TamTelaX, TamTelaY);
        
        PosX = Jogador.getLocation().x;
        PosY = Jogador.getLocation().y;
        
        super.repaint();
        
    }
    
    private void initComponents() {
               
        setTitle("Atirador"); setResizable(false);
        
        paJogo = new JPanel();
        
        
        Jogador = new JLabel(); Jogador.setIcon(new ImageIcon(DirRecursos+"SonicCorrendoDir.gif"));
        paJogo.add(Jogador);
        
        paJogo.add(Bala);
        
        
        VetMonstros[0] = new JLabel(); VetMonstros[0].setIcon(new ImageIcon(DirRecursos+"aranha.gif"));
        paJogo.add(VetMonstros[0]);
        VetInimigos[0] = new Inimigos(TamTelaX, TamTelaY, VetMonstros[0], Jogador);
        
        for(int i=1; i<VetInimigos.length; i++){
            
            VetMonstros[i] = new JLabel(); VetMonstros[i].setIcon(new ImageIcon(DirRecursos+VetRecursos[i % VetRecursos.length]));
            paJogo.add(VetMonstros[i]);
            
            VetInimigos[i] = new Inimigos(TamTelaX, TamTelaY, VetMonstros[i], Jogador);
            
            VetInimigos[i].start();
        }
        
        getContentPane().add(paJogo, BorderLayout.CENTER);
        pack();
        
        try{
            
            URL u;
            u = new URL("file://"+DirRecursos+"tiro.wav");Disparo = Applet.newAudioClip(u);
            u = new URL("file://"+DirRecursos+"boom.wav");Explosao = Applet.newAudioClip(u);
            
        }catch(Exception e){
            
            JOptionPane.showMessageDialog(this, "Não foi Possível Carregar os Arquivos de Audio!", "Atenção", JOptionPane.INFORMATION_MESSAGE);
            
        }
        
        addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent evt) {
                tecla(evt);
            }
        });
        
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    
    private void tecla(java.awt.event.KeyEvent evt) {
        switch(evt.getKeyCode()){
            case 38: // Seta para Cima
            {
                if(PosY>0){
                    PosY -= VelY;
                }
                break;
            }
            case 40: // Seta para Baixo
            {
                if(PosY<TamTelaY-Jogador.getHeight()){
                    PosY += VelY;
                }
                break;
            }
            case 37: // Seta para Esquerda
            {
                if(PosX>0){
                    PosX -= VelX;
                }
                
                Jogador.setIcon(new ImageIcon(DirRecursos+"SonicCorrendoEsq.gif"));
                Lado = 'E';
                
                break;
            }
            case 39: // Seta para Direita
            {
                if(PosX<TamTelaX-Jogador.getWidth()){
                    PosX += VelX;
                }
                
                Jogador.setIcon(new ImageIcon(DirRecursos+"SonicCorrendoDir.gif"));
                Lado = 'D';
                
                break;
            }
            case 32: // Barra de Espaços (Disparo)
            {
                Disparo.stop();
                Disparo.play();
                
                if(tir != null) tir.stop();
                tir = new Tiro(Jogador,Lado, Bala, TamTelaX);
                tir.start();
                
                break;
            }
            case 65:
            {
                Explosao.stop();
                Explosao.play();
            }
        }
        
        Jogador.setLocation(PosX, PosY);
        
    }
}
