¿Cómo escribir el código de whack-a-mole?
paquete com.lzw;
importar java.awt.EventQueue;
importar java.awt.event.MouseAdapter;
importar java.awt.event.MouseEvent;
importar javax.swing.ImageIcon;
importar javax.swing.JFrame;
importar javax.swing.JLabel;
la clase pública Shrewmouse extiende JFrame implementa ratones Runnable {
private JLabel[] //Almacena la matriz de etiquetas que muestra el número base
private ImageIcon imgMouse; //Objeto de imagen del mouse terrestre
public static void main(String args[]){
EventQueue.invokeLater(new Runnable(){
ejecución pública void (){
try{
Shrewmouse frame=new Shrewmouse(); //Crear formulario
frame.setVisible(true); //Mostrar formulario
p>new Thread(frame).start(); //Iniciar el hilo
}catch(Exception e){
e.printStackTrace();
}
}
});
}
público Musaraña(){
super ();
this.setResizable(false); //Prohibir cambiar el tamaño del formulario
this.getContentPane().setLayout(null); no utilizar la gestión de diseño
This.setTitle("Simple Whack-a-Mole Game"); //Establecer el título del formulario
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); p>
ImageIcon img=new ImageIcon(getClass().getResource("background.jpg"));
//Inicializa la imagen de fondo
imgMouse=new ImageIcon( getClass().getResource ("mouse1.jpg"));
//Inicializa el objeto de imagen del hámster
mouses=new JLabel[6] //Crea una matriz de etiquetas para mostrar el hámster
for(int i=0;ilt;6;i){ //Atravesar la matriz
m
ouses[i]=new JLabel(); //Inicializa cada elemento de la matriz
mouses[i].setSize(imgMouse.getIconWidth(), imgMouse.getIconHeight());
//Configura la etiqueta para que tenga el mismo tamaño que la imagen del mouse
mouses[i].addMouseListener(new MouseAdapter(){//Agrega un adaptador de escucha de eventos del mouse para la etiqueta
/**
* Métodos para manejar eventos de clic del mouse
*/
@Override
public void mouseClicked(MouseEvent e) {
Object source=e.getSource(); //Obtiene el origen del evento, es decir, la etiqueta de gopher
if(sourcestanceof JLabel){ //Si el evento es un componente de etiqueta
JLabel mouse=(JLabel)source //Conversión forzada a etiqueta JLabel
mouse.setIcon(null); //Cancelar icono de etiqueta
}
}
});
this.getContentPane().add(mouses[i]); //Agrega una etiqueta que muestre la tuza a el formulario
}
mouses[0].setLocation(253, 300); //Establece la posición de cada etiqueta
mouses[1].setLocation; (333, 250);
mouses[2].setLocation(388, 296);
mouses[3].setLocation(362, 364);
mouses[4].setLocation(189, 353);
mouses[5].setLocation(240, 409);
final JLabel backLabel=new JLabel(); Cree una etiqueta que muestre el fondo
backLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
this.setBounds(100, 100, img.getIconWidth(), img.getIconHeight() );
backLabel.setIcon(img); //Agregar fondo a la etiqueta
this.getContentPane().add(backLabel) ; //Agregar etiqueta de fondo al formulario
This.getContentPane().add(backLabel); //Agregar etiqueta de fondo al formulario
p>
}
/**
* Método principal del hilo
*/
public void run(){
while(true ){ //Usar bucle infinito
try{
Thread.sleep(3000);
//Dormir el hilo durante 3 segundos
int index=(int)(Math.random()*6); //Generar un índice de hámster aleatorio
if(mouses[index); ].getIcon()==null){ //Si la etiqueta del hámster no tiene una imagen configurada
mouses[index].setIcon(imgMouse); //Agrega una imagen del hámster a la etiqueta p>
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}