DÚVIDA ATUAL - Ainda sem resolução…
Consegui implementar o clique na imagem. Agora preciso que o jogo aconteça em “fases”, ou seja, o jogo consistiria assim:
- Primeira imagem passa em movimento na tela;
- Usuário deve clicar na imagem, então:
2.1) Caso o usuário consiga clicar antes de a imagem chegar ao final da tela, o sistema deve parar momentâneamente, apresentar na tela um texto e então passar ao item 3.
2.2) Caso o usuário não consiga clicar na imagem antes de ela chegar ao final da tela, o sistema apresenta na tela um outro texto e então passa ao item seguinte; - A segunda imagem passa em movimento na tela e segue o item 2 para ela;
- E assim segue o jogo até que tenham passado na tela todas as imagens.
Não sei como dividir dessa forma o código. Segue abaixo o que já consegui fazer. Mas no meu exemplo, as duas imagens se movimentam juntas. 
Desde já fico agradecido pela ajuda!
package gradue_poo;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class Principal extends JFrame {
double anos=0.0;
int concluido[] = new int[54];
JLabel r0 = new JLabel(new ImageIcon(getClass().getResource("r0.png")));
JLabel r1 = new JLabel(new ImageIcon(getClass().getResource("r0.png")));
public Principal(){
editarJanela();
new Movimento().start();
}
public void editarJanela(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(600,400);
setLocationRelativeTo(null);
setVisible(true);
setLayout(null);
r0.setBounds(-100,150,100,100);
add(r0);
r1.setBounds(-100,50,100,100);
add(r1);
}
public class Movimento extends Thread{
public void run(){
while(true){
try{sleep(20);}catch(Exception erro){}
if(r0.getX()<600 && concluido[0]!=1){
r0.setBounds(r0.getX()+5,150,100,100);
r0.addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
anos += 0.075;
r0.setBounds(600,150,100,100);
concluido[0]=1;
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
}
if(r1.getX()<600 && concluido[1]!=1){
r1.setBounds(r1.getX()+10,150,100,100);
r1.addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
anos += 0.075;
r1.setBounds(600,150,100,100);
concluido[1]=1;
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
}
}
}
}
public static void main(String[] args) {
new Principal();
}
}
====================================
POSTAGEM ORIGINAL
Olá pessoal, bom dia!
Estou fazendo um programa, onde até agora consegui fazer uma imagem “correr” pela tela. Agora eu preciso que enquanto ela estiver correndo, caso o usuário consiga clicar nela, eu guarde em uma variável uma pontuação. Porque depois pretendo criar outras imagens “correndo” e cada vez que o usuário conseguir clicar na imagem, essa pontuação vai aumentando. Como posso implementar isso? Segue abaixo o código que tenho até agora:
package gradue_poo;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Principal extends JFrame {
JLabel r1 = new JLabel(new ImageIcon(getClass().getResource("r1.png")));
public Principal(){
editarJanela();
new Movimento().start();
}
public void editarJanela(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(600,400);
setLocationRelativeTo(null);
setVisible(true);
setLayout(null);
r1.setBounds(-100,300,100,100);
add(r1);
}
public class Movimento extends Thread{
public void run(){
while(true){
try{sleep(20);}catch(Exception erro){}
if(r1.getX()<600){
r1.setBounds(r1.getX()+5,150,100,100);
}
}
}
}
public static void main(String[] args) {
new Principal();
}
}
