El ejemplo de este artículo describe el código del juego de pinball implementado en Java basado en swing. Compártelo con todos para tu referencia.
Los códigos de función principales son los siguientes:
Copie el código de código de la siguiente manera:
paquete Juego;
importar java.awt.Graphics;
importar java.awt.Insets;
importar java.awt.event.ActionEvent;
importar java.awt.event.ActionListener;
importar java.util.ArrayList;
importar java.util.Random;
importar javax.swing.ButtonGroup;
importar javax.swing.JMenu;
importar javax.swing.JMenuBar;
importar javax.swing.JMenuItem;
importar javax.swing.JOptionPane;
importar javax.swing.JRadioButtonMenuItem;
/**
* Clase de interfaz de juego
*
* @autor Administrador
*
*/
El juego de clase pública extiende javax.swing.JFrame {
serialVersionUID largo final estático privado = 1L;
UI de juego estática privada;
Gráficos privados g;
Oyente privado ml;
público javax.swing.JLabel text_field;
público javax.swing.JProgressBar pBar;
comando de cadena privada;
lista pública ArrayList<MiHilo> = nueva ArrayList<MiHilo>();
botón privado javax.swing.JToggleButton;
público estático vacío principal (String args []) {
UI = nuevo juego();
UI.initUI();
}
/**
* Método para inicializar el formulario.
*/
initUI nula pública() {
//Establecer título
this.setTitle("Si eres un maestro, mantenlo durante 10 segundos");
//Establecer tamaño
this.setSize(610, 635);
// Configurar apagado para salir del programa
this.setDefaultCloseOperation(3);
//Configurado para mostrar en el medio de la pantalla cuando se abre el formulario
this.setLocationRelativeTo(nulo);
//Establece el administrador de diseño de flujo del formulario
this.setLayout(nuevo java.awt.FlowLayout());
//Establece el color de fondo del formulario
this.getContentPane().setBackground(java.awt.Color.black);
//Crear objeto de etiqueta de texto
text_field = nuevo javax.swing.JLabel();
etiqueta javax.swing.JLabel = nueva javax.swing.JLabel("Hora:");
//Establece el color de primer plano de la etiqueta de texto
etiqueta.setForeground(java.awt.Color.red);
text_field.setForeground(java.awt.Color.red);
//Crear objeto de barra de progreso
pBar = nuevo javax.swing.JProgressBar(0, 330);
//Crear objeto de botón
botón = nuevo javax.swing.JToggleButton();
button.setMargin(new Insets(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));
button.setActionCommand("Pausa");
// Crea oyentes de acciones a través de clases internas anónimas
java.awt.event.ActionListener button_listener = nuevo java.awt.event.ActionListener() {
acción vacía pública realizada (ActionEvent e) {
Cadena com = e.getActionCommand();
si (com.equals("pausa")) {
button.setMargin(new Insets(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/start.gif"));
button.setActionCommand("Continuar");
para (int i = 0; i < lista.tamaño(); i++) {
lista.get(i).PauseThread();
}
}
si (com.equals ("continuar")) {
button.setMargin(new Insets(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));
button.setActionCommand("Pausa");
para (int i = 0; i < lista.tamaño(); i++) {
lista.get(i).ContinueThread();
}
}
}
};
botón.addActionListener(button_listener);
this.add(botón);
this.add(etiqueta);
this.add(pBar);
this.add(text_field);
// Ir a la barra de menú
Barra JMenuBar = creatMenuBar();
//Establece la barra de menú para el formulario
this.setJMenuBar(barra);
//Establece la visibilidad del formulario
this.setVisible(verdadero);
}
/**
* Cómo crear una barra de menú
*
* @devolver
*/
JMenuBar público creatMenuBar() {
//Crear objeto de barra de menú
Barra JMenuBar = nueva JMenuBar();
//Crear objeto de menú
JMenu menu_menu = nuevo JMenu("menú");
JMenu dificultad_menu = new JMenu("Dificultad");
JMenu help_menu = new JMenu("Ayuda");
//Crear objeto de opción de menú
JMenuItem star_item = nuevo JMenuItem("Inicio");
JMenuItem exit_item = nuevo JMenuItem("Salir");
JMenuItem help_item = new JMenuItem("Descripción del juego");
JMenuItem about_item = nuevo JMenuItem("acerca de");
//Crear opciones de radio
JRadioButtonMenuItem easy_item = nuevo JRadioButtonMenuItem(
"Simple");
JRadioButtonMenuItem middle_item = nuevo JRadioButtonMenuItem(
"medio");
JRadioButtonMenuItem hard_item = nuevo JRadioButtonMenuItem(
"dificultad");
//Crear un grupo de botones
Grupo de botones = nuevo grupo de botones();
// Agrega el botón de opción al grupo de botones
grupo.add(easy_item);
grupo.add(middle_item);
grupo.add(hard_item);
// Agregar botones de radio al menú
menú_dificultad.add(elemento_fácil);
dificultad_menu.add(middle_item);
dificultad_menu.add(hard_item);
// Crea oyentes de acciones a través de clases internas anónimas
Oyente ActionListener = nuevo ActionListener() {
acción vacía pública realizada (ActionEvent e) {
comando = e.getActionCommand();
// Si se selecciona inicio, crea el objeto de hilo
if (command.equals("inicio") && lista.tamaño() == 0) {
creatBall(20, 1);
}
// Si se selecciona el botón salir, salimos del programa
si (comando.equals("Salir")) {
Sistema.salir(0);
}
// Si se selecciona el botón simple
if (command.equals("simple") && lista.tamaño() == 0) {
creatBall(20, 1);
}
// Si se selecciona el botón medio
if (command.equals("medio") && lista.tamaño() == 0) {
creatBall(50, 2);
}
if (command.equals("dificultad") && lista.tamaño() == 0) {
creatBall(40, 2);
}
if (command.equals("Descripción del juego")) {
JOptionPane.showMessageDialog(nulo,
"Mueve el mouse y usa el deflector para atrapar la pelota. Si no puedes atraparla, pierdes.../nEl juego puede elegir dificultad, incluyendo fácil, media y difícil");
}
si (comando.equals("acerca de")) {
Panel de opciones J
.showMessageDialog(nulo,
"Este es un pequeño juego escrito en Java.../nProductor: Shen Guanjun/nHora: agosto de 2010/nCopyright, ¡cualquier reproducción será investigada!");
}
}
};
//Añadir detector de acciones
star_item.addActionListener(oyente);
exit_item.addActionListener(oyente);
easy_item.addActionListener(oyente);
middle_item.addActionListener(oyente);
hard_item.addActionListener(oyente);
help_item.addActionListener(oyente);
about_item.addActionListener(oyente);
//Agrega el objeto de opción de menú al objeto de menú
menu_menu.add(elemento_estrella);
menu_menu.add(exit_item);
menú_ayuda.add(elemento_ayuda);
help_menu.add(about_item);
//Añadir el objeto de menú a la barra de menú
barra.add(menu_menu);
bar.add(menú_dificultad);
bar.add(menú_ayuda);
// Devuelve el objeto de la barra de menú
barra de retorno;
}
/**
* Método para crear un objeto hilo.
*
* @param velocidad
* :velocidad
*
*/
public void creatBall(int velocidad, int num) {
Ejecución aleatoria = nueva Aleatoria();
si (ml == nulo) {
g = UI.getGraphics();
ml = nuevo oyente(g);
UI.addMouseListener(ml);
UI.addMouseMotionListener(ml);
}
para (int i = 0; i < número; i++) {
int x = corrió.nextInt(600) + 10;
int y = corrió.nextInt(300) + 100;
MyThread th = nuevo MyThread(g, ml, UI, x, y, velocidad);
lista.add(th);
th.start();
}
}
/**
* Cómo obtener el comando
*/
cadena pública getCommand() {
comando de retorno;
}
}
Copie el código de código de la siguiente manera:
paquete Juego;
importar java.awt.Color;
importar java.awt.Graphics;
importar java.awt.event.MouseAdapter;
importar java.awt.event.MouseEvent;
/**
* Clase de oyente del mouse.
*
* @autor Administrador
*
*/
El oyente de clase pública extiende MouseAdapter {
Gráficos privados g;
privado int x = 5, y = 620;
ancho int privado = 100, alto = 10;
Oyente público (Gráficos g) {
esto.g = g;
}
mouseMoved vacío público (MouseEvent e) {
//Establece el color del objeto del lienzo
sincronizado (this.g) {
g.setColor(Color.negro);
g.fillRect(x, y, ancho, alto);
x = e.getX();
g.setColor(java.awt.Color.verde);
g.fillRect(x, y, ancho, alto);
}
}
/**
* Método para obtener x
*
* @retorno:x
*/
público int getX() {
devolver x;
}
}
El efecto de ejecución se muestra en la siguiente figura:
Espero que este artículo sea útil para la programación Java de todos.