Contoh dalam artikel ini menjelaskan kode permainan pinball yang diimplementasikan di Java berbasis swing. Bagikan dengan semua orang untuk referensi Anda.
Kode fungsi utamanya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
paket Permainan;
impor java.awt.Grafik;
impor java.awt.Insets;
impor java.awt.event.ActionEvent;
impor java.awt.event.ActionListener;
impor java.util.ArrayList;
import java.util.Acak;
impor javax.swing.ButtonGroup;
impor javax.swing.JMenu;
impor javax.swing.JMenuBar;
impor javax.swing.JMenuItem;
impor javax.swing.JOptionPane;
impor javax.swing.JRadioButtonMenuItem;
/**
* Kelas antarmuka permainan
*
* @penulis Administrator
*
*/
Game kelas publik memperluas javax.swing.JFrame {
serialVersionUID panjang akhir statis pribadi = 1L;
UI Game statis pribadi;
Grafik pribadi g;
Pendengar pribadi ml;
javax.swing.JLabel publik text_field;
javax.swing.JProgressBar pBar publik;
perintah String pribadi;
public ArrayList<MyThread> daftar = ArrayList<MyThread>();
tombol javax.swing.JToggleButton pribadi;
public static void main(String args[]) {
UI = Game baru();
UI.initUI();
}
/**
* Metode untuk menginisialisasi formulir
*/
kekosongan publik initUI() {
//Tetapkan judul
this.setTitle("Jika Anda seorang master, pertahankan selama 10 detik");
//Setel ukuran
ini.setSize(610, 635);
// Atur shutdown untuk keluar dari program
this.setDefaultCloseOperation(3);
//Atur untuk ditampilkan di tengah layar saat formulir dibuka
this.setLocationRelativeTo(null);
//Mengatur pengelola tata letak aliran formulir
this.setLayout(java.awt.FlowLayout());
//Mengatur warna latar belakang formulir
this.getContentPane().setBackground(java.awt.Color.black);
//Membuat objek label teks
text_field = javax.swing.JLabel();
javax.swing.JLabel label = new javax.swing.JLabel("Waktu:");
//Mengatur warna latar depan label teks
label.setForeground(java.awt.Color.red);
text_field.setForeground(java.awt.Color.red);
//Buat objek bilah kemajuan
pBar = new javax.swing.JProgressBar(0, 330);
//Buat objek tombol
tombol = new javax.swing.JToggleButton();
button.setMargin(Inset baru(0, 0, 0, 0));
button.setIcon(javax.swing.ImageIcon baru("images/Pause.gif"));
button.setActionCommand("Jeda");
// Buat pendengar tindakan melalui kelas dalam anonim
java.awt.event.ActionListener button_listener = java.awt.event.ActionListener() baru {
public void actionPerformed(ActionEvent e) {
String com = e.getActionCommand();
if (com.equals("pause")) {
button.setMargin(Inset baru(0, 0, 0, 0));
button.setIcon(javax.swing.ImageIcon baru("images/start.gif"));
button.setActionCommand("Lanjutkan");
untuk (int i = 0; i < daftar.ukuran(); i++) {
daftar.mendapatkan(i).PauseThread();
}
}
if (com.equals("lanjutkan")) {
button.setMargin(Inset baru(0, 0, 0, 0));
button.setIcon(javax.swing.ImageIcon baru("images/Pause.gif"));
button.setActionCommand("Jeda");
untuk (int i = 0; i < daftar.ukuran(); i++) {
daftar.mendapatkan(i).ContinueThread();
}
}
}
};
tombol.addActionListener(button_listener);
this.add(tombol);
this.add(label);
ini.tambahkan(pBar);
this.add(text_field);
// Buka bilah menu
Bilah JMenuBar = creatMenuBar();
//Mengatur bilah menu untuk formulir
ini.setJMenuBar(bar);
//Mengatur visibilitas formulir
this.setVisible(benar);
}
/**
* Cara membuat bilah menu
*
* @kembali
*/
publik JMenuBar creatMenuBar() {
//Membuat objek bilah menu
Bilah JMenuBar = JMenuBar baru();
//Buat objek menu
JMenu menu_menu = JMenu baru("menu");
JMenu kesulitan_menu = JMenu baru("Kesulitan");
JMenu help_menu = JMenu baru("Bantuan");
//Buat objek opsi menu
JMenuItem star_item = JMenuItem baru("Mulai");
JMenuItem exit_item = JMenuItem baru("Keluar");
JMenuItem help_item = JMenuItem baru("Deskripsi Game");
JMenuItem about_item = JMenuItem baru("tentang");
//Buat opsi radio
JRadioButtonMenuItem easy_item = JRadioButtonMenuItem baru(
"Sederhana");
JRadioButtonMenuItem middle_item = JRadioButtonMenuItem baru(
"sedang");
JRadioButtonMenuItem hard_item = JRadioButtonMenuItem baru(
"kesulitan");
//Buat grup tombol
Grup ButtonGroup = ButtonGroup baru();
// Tambahkan tombol radio ke grup tombol
grup.tambahkan(item_mudah);
grup.tambahkan(item_tengah);
grup.tambahkan(hard_item);
// Tambahkan tombol radio ke menu
kesulitan_menu.tambahkan(item_mudah);
kesulitan_menu.tambahkan(item_tengah);
kesulitan_menu.tambahkan(hard_item);
// Buat pendengar tindakan melalui kelas dalam anonim
Pendengar ActionListener = ActionListener baru() {
public void actionPerformed(ActionEvent e) {
perintah = e.getActionCommand();
// Jika awal dipilih, buat objek thread
if (command.equals("start") && list.size() == 0) {
createBall(20, 1);
}
// Jika tombol keluar dipilih, keluar dari program
if (command.equals("Keluar")) {
Sistem.keluar(0);
}
// Jika tombol sederhana dipilih
if (command.equals("sederhana") && daftar.ukuran() == 0) {
createBall(20, 1);
}
// Jika tombol sedang dipilih
if (command.equals("medium") && list.size() == 0) {
createBall(50, 2);
}
if (command.equals("kesulitan") && daftar.ukuran() == 0) {
createBall(40, 2);
}
if (command.equals("Deskripsi permainan")) {
JOptionPane.showMessageDialog(null,
"Gerakkan mouse dan gunakan penyekat untuk menangkap bola. Jika tidak dapat menangkapnya, Anda kalah.../nPermainan dapat memilih tingkat kesulitan, termasuk mudah, sedang, dan keras");
}
if (command.equals("about")) {
JOptionPane
.showMessageDialog(batal,
"Ini adalah permainan kecil yang ditulis dalam Java.../nProduser: Shen Guanjun/nWaktu: Agustus 2010/nHak Cipta, reproduksi apa pun akan diselidiki!");
}
}
};
//Tambahkan pendengar tindakan
star_item.addActionListener(pendengar);
exit_item.addActionListener(pendengar);
easy_item.addActionListener(pendengar);
middle_item.addActionListener(pendengar);
hard_item.addActionListener(pendengar);
help_item.addActionListener(pendengar);
about_item.addActionListener(pendengar);
//Tambahkan objek opsi menu ke objek menu
menu_menu.tambahkan(item_bintang);
menu_menu.tambahkan(item_keluar);
help_menu.tambahkan(help_item);
help_menu.add(tentang_item);
//Tambahkan objek menu ke bilah menu
bar.tambahkan(menu_menu);
bar.tambahkan(menu_kesulitan);
bar.tambahkan(bantuan_menu);
// Mengembalikan objek bilah menu
bilah pengembalian;
}
/**
* Metode untuk membuat objek thread
*
* @kecepatan param
* :kecepatan
*
*/
public void creatBall(int kecepatan, int angka) {
Lari acak = baru Acak();
jika (ml == nol) {
g = UI.getGraphics();
ml = Pendengar baru(g);
UI.addMouseListener(ml);
UI.addMouseMotionListener(ml);
}
untuk (int i = 0; i < angka; i++) {
int x = lari.nextInt(600) + 10;
int y = lari.nextInt(300) + 100;
MyThread th = MyThread baru(g, ml, UI, x, y, kecepatan);
daftar.tambahkan(th);
th.mulai();
}
}
/**
* Cara mendapatkan perintah
*/
String publik getCommand() {
perintah kembali;
}
}
Copy kode kodenya sebagai berikut:
paket Permainan;
impor java.awt.Color;
impor java.awt.Grafik;
impor java.awt.event.MouseAdapter;
impor java.awt.event.MouseEvent;
/**
* Kelas pendengar tikus
*
* @penulis Administrator
*
*/
Pendengar kelas publik memperluas MouseAdapter {
Grafik pribadi g;
pribadi int x = 5, y = 620;
lebar int pribadi = 100, tinggi = 10;
Pendengar Publik (Grafik g) {
ini.g = g;
}
public void mouseMoved(MouseEvent e) {
//Mengatur warna objek kanvas
disinkronkan (ini.g) {
g.setColor(Warna.hitam);
g.fillRect(x, y, lebar, tinggi);
x = e.getX();
g.setColor(java.awt.Color.hijau);
g.fillRect(x, y, lebar, tinggi);
}
}
/**
* Metode untuk mendapatkan x
*
* @pengembalian:x
*/
publik int getX() {
kembalikan x;
}
}
Efek yang berjalan ditunjukkan pada gambar di bawah ini:
Saya harap artikel ini bermanfaat untuk pemrograman Java semua orang.