O exemplo neste artigo descreve o código do jogo de pinball implementado em Java baseado em swing. Compartilhe com todos para sua referência.
Os principais códigos de função são os seguintes:
Copie o código do código da seguinte forma:
pacote Jogo;
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;
/**
* Classe de interface do jogo
*
* @autor Administrador
*
*/
classe pública O jogo estende javax.swing.JFrame {
privado estático final longo serialVersionUID = 1L;
UI de jogo estática privada;
Gráficos privados g;
Ouvinte privado ml;
public javax.swing.JLabel text_field;
public javax.swing.JProgressBar pBar;
comando String privado;
public ArrayList<MeuThread> list = new ArrayList<MeuThread>();
botão javax.swing.JToggleButton privado;
public static void main(String args[]) {
UI = novo Jogo();
UI.initUI();
}
/**
* Método para inicializar o formulário
*/
public void initUI() {
//Definir título
this.setTitle("Se você é um mestre, persista por 10s");
//Definir tamanho
this.setSize(610, 635);
// Define shutdown para sair do programa
this.setDefaultCloseOperation(3);
//Definido para exibir no meio da tela quando o formulário for aberto
this.setLocationRelativeTo(nulo);
//Definir o gerenciador de layout de fluxo do formulário
this.setLayout(novo java.awt.FlowLayout());
//Define a cor de fundo do formulário
this.getContentPane().setBackground(java.awt.Color.black);
//Cria objeto de rótulo de texto
text_field = novo javax.swing.JLabel();
etiqueta javax.swing.JLabel = new javax.swing.JLabel("Tempo:");
//Define a cor de primeiro plano do rótulo de texto
rótulo.setForeground(java.awt.Color.red);
text_field.setForeground(java.awt.Color.red);
//Cria objeto barra de progresso
pBar = novo javax.swing.JProgressBar(0, 330);
//Cria objeto botão
botão = novo javax.swing.JToggleButton();
button.setMargin(novas inserções(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("imagens/Pause.gif"));
button.setActionCommand("Pausa");
// Cria ouvintes de ação através de classes internas anônimas
java.awt.event.ActionListener button_listener = novo java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
String com = e.getActionCommand();
if (com.equals("pausa")) {
button.setMargin(novas inserções(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/start.gif"));
button.setActionCommand("Continuar");
for (int i = 0; i < list.size(); i++) {
list.get(i).PauseThread();
}
}
if (com.equals("continuar")) {
button.setMargin(novas inserções(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("imagens/Pause.gif"));
button.setActionCommand("Pausa");
for (int i = 0; i < list.size(); i++) {
list.get(i).ContinueThread();
}
}
}
};
botão.addActionListener(button_listener);
this.add(botão);
this.add(etiqueta);
this.add(pBar);
this.add(campo_texto);
//Vá para a barra de menu
barra JMenuBar = creatMenuBar();
//Define a barra de menu do formulário
this.setJMenuBar(barra);
//Define a visibilidade do formulário
this.setVisible(verdadeiro);
}
/**
* Como criar uma barra de menu
*
* @retornar
*/
public JMenuBar creatMenuBar() {
//Cria objeto da barra de menu
Barra JMenuBar = new JMenuBar();
//Cria objeto de menu
JMenu menu_menu = new JMenu("menu");
JMenu dificuldade_menu = new JMenu("Dificuldade");
JMenu help_menu = new JMenu("Ajuda");
//Cria objeto de opção de menu
JMenuItem star_item = new JMenuItem("Iniciar");
JMenuItem exit_item = new JMenuItem("Sair");
JMenuItem help_item = new JMenuItem("Descrição do Jogo");
JMenuItem sobre_item = new JMenuItem("sobre");
//Cria opções de rádio
JRadioButtonMenuItem easy_item = novo JRadioButtonMenuItem(
"Simples");
JRadioButtonMenuItem middle_item = novo JRadioButtonMenuItem(
"médio");
JRadioButtonMenuItem hard_item = novo JRadioButtonMenuItem(
"dificuldade");
//Cria um grupo de botões
Grupo ButtonGroup = new ButtonGroup();
//Adiciona o botão de opção ao grupo de botões
grupo.add(item_fácil);
grupo.add(item_do_meio);
grupo.add(hard_item);
//Adiciona botões de opção ao menu
dificuldade_menu.add(easy_item);
dificuldade_menu.add(item_do_meio);
dificuldade_menu.add(hard_item);
// Cria ouvintes de ação através de classes internas anônimas
Ouvinte ActionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
comando = e.getActionCommand();
// Se start estiver selecionado, cria o objeto thread
if (command.equals("iniciar") && list.size() == 0) {
criaBall(20, 1);
}
//Se o botão sair estiver selecionado, sai do programa
if (command.equals("Sair")) {
Sistema.exit(0);
}
//Se o botão simples for selecionado
if (command.equals("simples") && list.size() == 0) {
criaBall(20, 1);
}
//Se o botão médio estiver selecionado
if (command.equals("medium") && list.size() == 0) {
criaBall(50, 2);
}
if (command.equals("dificuldade") && list.size() == 0) {
criaBall(40, 2);
}
if (command.equals("Descrição do jogo")) {
JOptionPane.showMessageDialog(nulo,
"Mova o mouse e use o defletor para pegar a bola. Se não conseguir pegar, você perde.../nO jogo pode escolher a dificuldade, incluindo fácil, médio e difícil");
}
if (command.equals("sobre")) {
JOptionPane
.showMessageDialog(nulo,
"Este é um pequeno jogo escrito em Java.../nProdutor: Shen Guanjun/nHora: agosto de 2010/nCopyright, qualquer reprodução será investigada!");
}
}
};
//Adiciona ouvinte de ação
star_item.addActionListener(ouvinte);
exit_item.addActionListener(ouvinte);
easy_item.addActionListener(ouvinte);
middle_item.addActionListener(ouvinte);
hard_item.addActionListener(ouvinte);
help_item.addActionListener(ouvinte);
about_item.addActionListener(ouvinte);
//Adiciona o objeto de opção de menu ao objeto de menu
menu_menu.add(star_item);
menu_menu.add(exit_item);
help_menu.add(help_item);
help_menu.add(about_item);
//Adiciona o objeto de menu à barra de menu
barra.add(menu_menu);
bar.add(dificuldade_menu);
barra.add(help_menu);
//Retorna o objeto da barra de menu
barra de retorno;
}
/**
* Método para criar objeto thread
*
* @param velocidade
* :velocidade
*
*/
public void creatBall(int velocidade, int num) {
Corrida aleatória = new Random();
if (ml == nulo) {
g = UI.getGraphics();
ml = novo ouvinte(g);
UI.addMouseListener(ml);
UI.addMouseMotionListener(ml);
}
for (int i = 0; i < num; i++) {
int x = ran.nextInt(600) + 10;
int y = ran.nextInt(300) + 100;
MyThread th = new MyThread(g, ml, UI, x, y, velocidade);
lista.add(th);
th.start();
}
}
/**
* Como obter o comando
*/
public String getCommand() {
comando de retorno;
}
}
Copie o código do código da seguinte forma:
pacote Jogo;
importar java.awt.Color;
importar java.awt.Graphics;
importar java.awt.event.MouseAdapter;
importar java.awt.event.MouseEvent;
/**
* Classe de ouvinte de mouse
*
* @autor Administrador
*
*/
classe pública Listener estende MouseAdapter {
Gráficos privados g;
privado int x = 5, y = 620;
largura interna privada = 100, altura = 10;
ouvinte público (gráficos g) {
isto.g = g;
}
public void mouseMoved(MouseEvent e) {
//Define a cor do objeto canvas
sincronizado (este.g) {
g.setColor(Color.preto);
g.fillRect(x, y, largura, altura);
x = e.getX();
g.setColor(java.awt.Color.green);
g.fillRect(x, y, largura, altura);
}
}
/**
* Método para obter x
*
* @return:x
*/
public int getX() {
retornar x;
}
}
O efeito de corrida é mostrado na figura abaixo:
Espero que este artigo seja útil para a programação Java de todos.