sexta-feira, 31 de maio de 2013

JAVA GAMES 2D::Eventos do Mouse::13

Olá pessoal!

Nesse tutorial iremos aprender uma das maneiras de como usar os Eventos  do Mouse, é muito semelhante ao tutorial anterior de Eventos do Teclado, para o nosso tutorial de hoje utilizaremos duas Interfaces: MouseListener e MouseMotionListener
(Criem um pacote tutorial13 no nosso projeto JAVAGAMES2D com o arquivo Game.java)
Muito bem....Vamos lá!
A primeira coisa a ser feita é implementar as interfaces na nossa Classe Game.java
1:  public class Game extends JFrame implements MouseListener, MouseMotionListener{  

Lembrem de adicionar a implementação dos métodos dessas interfaces, observem que podemos implementar quantas interfaces quisermos, bastando apenas separar por virgula, então é possível usar eventos de teclado e mouse num mesmo jogo...
Agora veja os método que serão implementados no final da Classe Game.java:

1:  @Override  
2:   public void mouseClicked(MouseEvent e) {  
3:   // TODO Auto-generated method stub  
4:   }  
5:   @Override  
6:   public void mouseEntered(MouseEvent e) {  
7:   // TODO Auto-generated method stub  
8:   }  
9:   @Override  
10:   public void mouseExited(MouseEvent e) {  
11:   // TODO Auto-generated method stub  
12:   }  
13:   @Override  
14:   public void mousePressed(MouseEvent e) {  
15:   // TODO Auto-generated method stub  
16:   }  
17:   @Override  
18:   public void mouseReleased(MouseEvent e) {  
19:   // TODO Auto-generated method stub  
20:   }  
21:   @Override  
22:   public void mouseDragged(MouseEvent e) {  
23:   // TODO Auto-generated method stub  
24:   }  
25:   @Override  
26:   public void mouseMoved(MouseEvent e) {  
27:   // TODO Auto-generated method stub  
28:   }  

Recomendo apagar esses comentários gerados (caso você tenha mandado gerar automaticamente), Muito bem... vamos lá....
Os métodos mouseMoved() e mouseDragged() são da interface MouseMotionsListener, e os outros métodos são de MouseListener,  bem... vejamos para quê serve cada um desses eventos:

mouseMoved(): é acionado todo vez que você mover o mouse.
mouseDragged(): é acionado toda vez que você clica segura e arrasta.

mouseReleased(): é acionado quando você libera o clique.
mousePressed(): é acionado no momento em quê o clique é pressionado e mantamos pressionado.
mouseExited(): é acionado quando o cursor é retirado de cima de um elemento.
mouseEntered(): é acionado quando o cursor ficar sobre um elemento.
mouseClicked(): é acionando quando clicamos com o mouse.

Agora a próxima etapa é adicionar um escutador para esses eventos no nosso JFrame dentro do método inicializar(),  se não adicionarmos esses escutadores nenhum desses métodos serão executados quando os eventos forem acionados (lembrando, o escutador é que manda executar esses métodos quando o evento for acionado).
Observe o código abaixo:

1:  public void inicializar() {  
2:   setTitle("Titulo do Jogo!");  
3:   setSize(janelaW, janelaH);  
4:   setResizable(false);  
5:   setDefaultCloseOperation(EXIT_ON_CLOSE);  
6:   setLayout(null);  
7:   setVisible(true);  
8:   backBuffer = new BufferedImage(janelaW, janelaH, BufferedImage.TYPE_INT_RGB);  
9:   //AQUI ESTAMOS ADICIONANDO OS ESCUTADORES DE EVENTOS DO MOUSE  
10:   addMouseListener(this);  
11:   addMouseMotionListener(this);  
12:   }  

Muito simples! não é?
Agora vamos ver um exemplo de uso de eventos do mouse, no nosso exemplo iremos mover uma mira,  exibir as coordenadas do cursor no JFrame e quando clicarmos exibir uma mensagem!
(LEIAM OS COMENTÁRIOS DO CÓDIGO COM ATENÇÃO)

1:  import java.awt.*;  
2:  import java.awt.event.KeyEvent;  
3:  import java.awt.event.KeyListener;  
4:  import java.awt.event.MouseEvent;  
5:  import java.awt.event.MouseListener;  
6:  import java.awt.event.MouseMotionListener;  
7:  import java.awt.image.BufferedImage;  
8:  import java.io.File;  
9:  import javax.swing.ImageIcon;  
10:  import javax.swing.JFrame;  
11:  import javax.swing.JOptionPane;  
12:  public class Game extends JFrame implements MouseListener, MouseMotionListener{  
13:   BufferedImage backBuffer;  
14:   int FPS = 30;  
15:   int janelaW = 500;  
16:   int janelaH = 500;  
17:   //VARIAVEIS QUE VAMOS UTILIZAR  
18:   //UMA IMAGEM PARA REPRESENTAR A MIRA  
19:   //E AS SUAS COORDENADAS X e Y  
20:   //NÃO SE ESQUEÇA DE OLHAR O MÉTODO desenharGraficos()  
21:   //e os métodos de eventos que é onde iremos tratar algumas coisas  
22:   ImageIcon mira = new ImageIcon("src/tutor13/mira.png");  
23:   int xMira;  
24:   int yMira;  
25:   public void atualizar() {  
26:   }  
27:   public void desenharGraficos() {  
28:   Graphics g = getGraphics(); //ISSO JÁ ESTAVA AQUI  
29:   Graphics bbg = backBuffer.getGraphics();//ISSO TAMBÉM JÁ ESTAVA AQUI...  
30:   bbg.setColor(Color.WHITE);  
31:   bbg.fillRect(0, 0, janelaW, janelaH); //PINTA O FUNDO COM UM QUADRADO BRANCO  
32:   bbg.setColor(Color.RED);  
33:   bbg.setFont(new Font("helvica",Font.BOLD,20));  
34:   bbg.drawString("X=: "+xMira+" Y="+yMira, 50, 100); //EXIBE UM TEXTO + O VALOR DA TECLA PRESSIONADA  
35:   //QUE ESTÁ NA VARIÁVEL teclaPressionada  
36:   //AQUI DESENHAMOS A MIRA, O -25 É PARA FICAR CENTRALIZADA COM O CURSOR  
37:   bbg.drawImage(mira.getImage(), xMira-25, yMira-25, this);  
38:   //==================================================================================  
39:   g.drawImage(backBuffer, 0, 0, this);//OBS: ISSO DEVE FICAR SEMPRE NO FINAL!  
40:   }  
41:   public void inicializar() {  
42:   setTitle("Titulo do Jogo!");  
43:   setSize(janelaW, janelaH);  
44:   setResizable(false);  
45:   setDefaultCloseOperation(EXIT_ON_CLOSE);  
46:   setLayout(null);  
47:   setVisible(true);  
48:   backBuffer = new BufferedImage(janelaW, janelaH, BufferedImage.TYPE_INT_RGB);  
49:   //AQUI ESTAMOS ADICIONANDO OS ESCUTADORES DE EVENTOS DO MOUSE  
50:   addMouseListener(this);  
51:   addMouseMotionListener(this);  
52:   }  
53:   public void run() {  
54:   inicializar();  
55:   while (true) {  
56:    atualizar();  
57:    desenharGraficos();  
58:    try {  
59:     Thread.sleep(1000/FPS);  
60:    } catch (Exception e) {  
61:     System.out.println("Thread interrompida!");  
62:    }  
63:   }  
64:   }  
65:   public static void main(String[] args) {  
66:   Game game = new Game();  
67:   game.run();  
68:   }  
69:   public void mouseClicked(MouseEvent e) {  
70:   JOptionPane.showMessageDialog(null, "Você clicou!!!!");  
71:   }  
72:   public void mouseEntered(MouseEvent e) {  
73:   }  
74:   public void mouseExited(MouseEvent e) {  
75:   }  
76:   public void mousePressed(MouseEvent e) {  
77:   }  
78:   public void mouseReleased(MouseEvent e) {  
79:   }  
80:   public void mouseDragged(MouseEvent e) {  
81:   }  
82:   public void mouseMoved(MouseEvent e) {  
83:   //AQUI X e Y DA MIRA RECEBE AS COORDENADAS DO CURSOR  
84:   xMira = e.getX();  
85:   yMira = e.getY();  
86:   }  
87:  }  

Veja como ficou:




Muito simples não é ?
Até o próximo tutorial!!! não deixem de comentar ou tirar duvidas! (assim que dé, respondo!!!)

Nenhum comentário:

Postar um comentário