Пример в этой статье описывает код игры в пинбол, реализованный на Java на основе свинга. Поделитесь этим со всеми для справки.
Основные функциональные коды следующие:
Скопируйте код кода следующим образом:
пакет игры;
импортировать java.awt.Graphics;
импортировать java.awt.Insets;
импортировать java.awt.event.ActionEvent;
импортировать java.awt.event.ActionListener;
импортировать java.util.ArrayList;
импортировать java.util.Random;
импортировать javax.swing.ButtonGroup;
импортировать javax.swing.JMenu;
импортировать javax.swing.JMenuBar;
импортировать javax.swing.JMenuItem;
импортировать javax.swing.JOptionPane;
импортировать javax.swing.JRadioButtonMenuItem;
/**
* Класс игрового интерфейса
*
* @author Администратор
*
*/
общедоступный класс Game расширяет javax.swing.JFrame {
частный статический окончательный длинный серийныйVersionUID = 1L;
частный статический игровой интерфейс;
частная графика г;
частный прослушиватель мл;
общедоступный javax.swing.JLabel text_field;
общедоступный javax.swing.JProgressBar pBar;
частная строковая команда;
список public ArrayList<MyThread> = новый ArrayList<MyThread>();
частная кнопка javax.swing.JToggleButton;
public static void main(String args[]) {
Пользовательский интерфейс = новая игра();
UI.initUI();
}
/**
* Метод инициализации формы
*/
общественный недействительный initUI () {
//Устанавливаем заголовок
this.setTitle("Если вы мастер, придерживайтесь этого в течение 10 секунд");
//Установить размер
this.setSize(610, 635);
// Устанавливаем выключение для выхода из программы
this.setDefaultCloseOperation(3);
//Устанавливаем отображение в середине экрана при открытии формы
this.setLocationRelativeTo(null);
//Устанавливаем менеджер компоновки формы
this.setLayout(новый java.awt.FlowLayout());
//Устанавливаем цвет фона формы
this.getContentPane().setBackground(java.awt.Color.black);
//Создаем объект текстовой метки
text_field = новый javax.swing.JLabel();
javax.swing.JLabel label = новый javax.swing.JLabel("Time:");
//Установим цвет переднего плана текстовой метки
lable.setForeground(java.awt.Color.red);
text_field.setForeground(java.awt.Color.red);
//Создаем объект индикатора выполнения
pBar = новый javax.swing.JProgressBar(0, 330);
//Создаем объект кнопки
кнопка = новый javax.swing.JToggleButton();
button.setMargin(новые вставки(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));
button.setActionCommand("Пауза");
// Создаем прослушиватели действий через анонимные внутренние классы
java.awt.event.ActionListener button_listener = новый java.awt.event.ActionListener() {
общественный недействительный actionPerformed (ActionEvent e) {
Строка com = e.getActionCommand();
if (com.equals("пауза")) {
button.setMargin(новые вставки(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/start.gif"));
button.setActionCommand("Продолжить");
for (int i = 0; i < list.size(); i++) {
list.get(i).PauseThread();
}
}
если (com.equals("продолжить")) {
button.setMargin(новые вставки(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));
button.setActionCommand("Пауза");
for (int i = 0; i < list.size(); i++) {
list.get(i).ContinueThread();
}
}
}
};
button.addActionListener(button_listener);
this.add(кнопка);
this.add(метка);
this.add(pBar);
this.add(text_field);
// Переходим в строку меню
JMenuBar bar = creatMenuBar();
//Установим строку меню для формы
this.setJMenuBar(бар);
//Устанавливаем видимость формы
this.setVisible(истина);
}
/**
* Как создать строку меню
*
* @возвращаться
*/
общественный JMenuBar creatMenuBar () {
//Создаем объект строки меню
JMenuBar bar = новый JMenuBar();
//Создаем объект меню
JMenumenu_menu = новый JMenu("меню");
JMenu трудности_мену = новый JMenu("Сложность");
JMenu help_menu = новый JMenu («Помощь»);
//Создаем объект опции меню
JMenuItem star_item = новый JMenuItem («Начать»);
JMenuItem exit_item = новый JMenuItem («Выход»);
JMenuItem help_item = новый JMenuItem("Описание игры");
JMenuItem about_item = новый JMenuItem («о»);
//Создаем параметры радио
JRadioButtonMenuItem easy_item = новый JRadioButtonMenuItem(
"Простой");
JRadioButtonMenuItem middle_item = новый JRadioButtonMenuItem(
"середина");
JRadioButtonMenuItem hard_item = новый JRadioButtonMenuItem(
«трудность»);
//Создаем группу кнопок
Группа ButtonGroup = новая ButtonGroup();
// Добавляем переключатель в группу кнопок
group.add(easy_item);
group.add(middle_item);
group.add(hard_item);
// Добавляем переключатели в меню
трудности_меню.добавить(easy_item);
трудности_меню.добавить(средний_элемент);
трудности_меню.add(hard_item);
// Создаем прослушиватели действий через анонимные внутренние классы
Прослушиватель ActionListener = новый ActionListener() {
общественный недействительный actionPerformed (ActionEvent e) {
команда = e.getActionCommand();
// Если выбрано начало, создаем объект потока
if (command.equals("start") && list.size() == 0) {
creatBall(20, 1);
}
// Если выбрана кнопка выхода, выходим из программы
if (command.equals("Выход")) {
Система.выход(0);
}
// Если выбрана простая кнопка
if (command.equals("simple") && list.size() == 0) {
creatBall(20, 1);
}
// Если выбрана средняя кнопка
if (command.equals("medium") && list.size() == 0) {
creatBall(50, 2);
}
if (command.equals("difficulty") && list.size() == 0) {
creatBall(40, 2);
}
if (command.equals("Описание игры")) {
JOptionPane.showMessageDialog(нуль,
«Двигайте мышкой и используйте перегородку, чтобы поймать мяч. Если вы не сможете его поймать, вы проиграете.../nВ игре можно выбирать сложность, в том числе легкую, среднюю и сложную»);
}
если (команда.equals("о")) {
JOptionPane
.showMessageDialog(ноль,
«Это небольшая игра, написанная на Java.../nПродюсер: Шэнь Гуаньцзюнь/nВремя: август 2010 г./nАвторские права, любое воспроизведение будет расследовано!»);
}
}
};
//Добавляем прослушиватель действий
star_item.addActionListener(слушатель);
exit_item.addActionListener(слушатель);
easy_item.addActionListener(слушатель);
middle_item.addActionListener(слушатель);
hard_item.addActionListener(слушатель);
help_item.addActionListener(слушатель);
about_item.addActionListener(слушатель);
//Добавляем объект опции меню к объекту меню
Menu_menu.add(star_item);
Menu_menu.add(exit_item);
help_menu.add(help_item);
help_menu.add(about_item);
//Добавляем объект меню в строку меню
bar.add(menu_menu);
bar.add(difficulty_menu);
bar.add(help_menu);
// Возвращаем объект строки меню
возвратная планка;
}
/**
* Метод создания объекта потока
*
* @параметр скорость
* :скорость
*
*/
public void creatBall(int скорость, int num) {
Случайный запуск = новый Random();
если (мл == ноль) {
г = UI.getGraphics();
мл = новый прослушиватель (г);
UI.addMouseListener(мл);
UI.addMouseMotionListener(мл);
}
for (int я = 0; я <число; я++) {
int x = ran.nextInt(600) + 10;
int y = ran.nextInt(300) + 100;
MyThread th = новый MyThread (g, ml, UI, x, y, скорость);
список.добавить(й);
th.start();
}
}
/**
* Как получить команду
*/
публичная строка getCommand() {
команда возврата;
}
}
Скопируйте код кода следующим образом:
пакет игры;
импортировать java.awt.Color;
импортировать java.awt.Graphics;
импортировать java.awt.event.MouseAdapter;
импортировать java.awt.event.MouseEvent;
/**
* Класс прослушивателя мыши
*
* @author Администратор
*
*/
Прослушиватель открытого класса расширяет MouseAdapter {
частная графика г;
частный интервал x = 5, y = 620;
частная ширина int = 100, высота = 10;
публичный прослушиватель (графика г) {
this.g = г;
}
public void mouseMoved(MouseEvent e) {
//Устанавливаем цвет объекта холста
синхронизировано (this.g) {
g.setColor(Color.black);
g.fillRect(x, y, ширина, высота);
х = е.getX();
g.setColor(java.awt.Color.green);
g.fillRect(x, y, ширина, высота);
}
}
/**
* Метод получения x
*
* @return: х
*/
общественный int getX() {
вернуть х;
}
}
Эффект от бега показан на рисунке ниже:
Я надеюсь, что эта статья будет полезна каждому, кто занимается программированием на Java.