ตัวอย่างในบทความนี้จะอธิบายโค้ดเกมพินบอลที่ใช้ใน Java โดยยึดตามการสวิง แบ่งปันกับทุกคนสำหรับการอ้างอิงของคุณ
รหัสฟังก์ชั่นหลักมีดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจเกม;
นำเข้า java.awt.Graphics;
นำเข้า java.awt.Insets;
นำเข้า java.awt.event.ActionEvent;
นำเข้า java.awt.event.ActionListener;
นำเข้า java.util.ArrayList;
นำเข้า java.util.สุ่ม;
นำเข้า javax.swing.ButtonGroup;
นำเข้า javax.swing.JMenu;
นำเข้า javax.swing.JMenuBar;
นำเข้า javax.swing.JMenuItem;
นำเข้า javax.swing.JOptionPane;
นำเข้า javax.swing.JRadioButtonMenuItem;
-
* คลาสอินเทอร์เฟซเกม
-
* @ผู้เขียน ผู้ดูแลระบบ
-
-
เกมคลาสสาธารณะขยาย javax.swing.JFrame {
serialVersionUID ยาวสุดท้ายแบบคงที่ส่วนตัว = 1L;
UI เกมส่วนตัวแบบคงที่
กราฟิกส่วนตัว g;
ผู้ฟังส่วนตัว ml;
javax.swing.JLabel text_field สาธารณะ;
javax.swing.JProgressBar pBar สาธารณะ;
คำสั่งสตริงส่วนตัว
รายการ ArrayList <MyThread> สาธารณะ = ArrayList ใหม่ <MyThread>();
ปุ่ม javax.swing.JToggleButton ส่วนตัว;
โมฆะคงที่สาธารณะ main (String args []) {
UI = เกมใหม่();
UI.initUI();
-
-
* วิธีการเริ่มต้นแบบฟอร์ม
-
โมฆะสาธารณะ initUI() {
//ตั้งชื่อเรื่อง
this.setTitle("ถ้าคุณเป็นผู้เชี่ยวชาญ ให้ยึดถือมันเป็นเวลา 10 วินาที");
//กำหนดขนาด
นี้.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("เวลา:");
//กำหนดสีพื้นหน้าของป้ายกำกับข้อความ
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(ใหม่ javax.swing.ImageIcon("images/Pause.gif"));
button.setActionCommand("หยุดชั่วคราว");
// สร้างผู้ฟังการกระทำผ่านคลาสภายในที่ไม่ระบุชื่อ
java.awt.event.ActionListener button_listener = ใหม่ java.awt.event.ActionListener() {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
สตริง com = e.getActionCommand();
ถ้า (com.equals("หยุดชั่วคราว")) {
button.setMargin(ส่วนแทรกใหม่ (0, 0, 0, 0));
button.setIcon(ใหม่ javax.swing.ImageIcon("images/start.gif"));
button.setActionCommand("ดำเนินการต่อ");
สำหรับ (int i = 0; i < list.size(); i++) {
list.get(i).PauseThread();
-
-
ถ้า (com.equals("ดำเนินการต่อ")) {
button.setMargin(ส่วนแทรกใหม่ (0, 0, 0, 0));
button.setIcon(ใหม่ javax.swing.ImageIcon("images/Pause.gif"));
button.setActionCommand("หยุดชั่วคราว");
สำหรับ (int i = 0; i < list.size(); i++) {
list.get(i).ContinueThread();
-
-
-
-
ปุ่ม. addActionListener (button_listener);
this.add(ปุ่ม);
this.add(ฉลาก);
this.add(pBar);
this.add(text_field);
// ไปที่แถบเมนู
แถบ JMenuBar = creatMenuBar();
//ตั้งค่าแถบเมนูสำหรับแบบฟอร์ม
this.setJMenuBar(บาร์);
//กำหนดการมองเห็นของแบบฟอร์ม
this.setVisible (จริง);
-
-
* วิธีสร้างแถบเมนู
-
* @กลับ
-
JMenuBar สาธารณะ creatMenuBar () {
//สร้างวัตถุแถบเมนู
แถบ JMenuBar = JMenuBar ใหม่ ();
//สร้างวัตถุเมนู
JMenu menu_menu = ใหม่ JMenu("เมนู");
JMenuความยากลำบาก_menu = 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);
// เพิ่มปุ่มตัวเลือกลงในเมนู
ความยาก_menu.add(easy_item);
ปัญหา_เมนู.เพิ่ม(middle_item);
ความยาก_menu.add(hard_item);
// สร้างผู้ฟังการกระทำผ่านคลาสภายในที่ไม่ระบุชื่อ
ผู้ฟัง ActionListener = ใหม่ ActionListener() {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
คำสั่ง = e.getActionCommand();
// หากเลือก start ให้สร้างวัตถุเธรด
ถ้า (command.equals("เริ่มต้น") && list.size() == 0) {
creatBall(20, 1);
-
// หากเลือกปุ่มออก ให้ออกจากโปรแกรม
ถ้า (command.equals("ออก")) {
System.ออก(0);
-
// หากเลือกปุ่มธรรมดา
ถ้า (command.equals("simple") && list.size() == 0) {
creatBall(20, 1);
-
// หากเลือกปุ่มกลาง
ถ้า (command.equals("ปานกลาง") && list.size() == 0) {
creatBall(50, 2);
-
ถ้า (command.equals("ความยาก") && list.size() == 0) {
creatBall(40, 2);
-
if (command.equals("คำอธิบายเกม")) {
JOptionPane.showMessageDialog(null,
"เลื่อนเมาส์แล้วใช้แผ่นกั้นจับลูกบอล จับไม่ได้ถือว่าแพ้.../nตัวเกมสามารถเลือกระดับความยากได้ ทั้งง่าย ปานกลาง และยาก");
-
ถ้า (command.equals("เกี่ยวกับ")) {
JOptionPane
.showMessageDialog(null,
"นี่เป็นเกมขนาดเล็กที่เขียนด้วย Java.../nProducer: Shen Guanjun/nTime: สิงหาคม 2010/nCopyright การทำซ้ำใดๆ จะถูกตรวจสอบ!");
-
-
-
//เพิ่มตัวฟังการกระทำ
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(เมนู_เมนู);
bar.add(difficulty_menu);
bar.add(help_menu);
// คืนวัตถุแถบเมนู
แถบส่งคืน;
-
-
* วิธีการสร้างวัตถุเธรด
-
* @ความเร็วพารามิเตอร์
* :ความเร็ว
-
-
โมฆะสาธารณะ creatBall (ความเร็ว int, int num) {
สุ่มวิ่ง = สุ่มใหม่ ();
ถ้า (มล. == โมฆะ) {
g = UI.getGraphics();
ml = ผู้ฟังใหม่ (g);
UI.addMouseListener(มล.);
UI.addMouseMotionListener(มล.);
-
สำหรับ (int i = 0; i < num; i++) {
int x = ran.nextInt(600) + 10;
int y = ran.nextInt (300) + 100;
MyThread th = ใหม่ MyThread(g, ml, UI, x, y, ความเร็ว);
list.add(th);
th.เริ่มต้น();
-
-
-
* วิธีรับคำสั่ง
-
สตริงสาธารณะ getCommand() {
คำสั่งส่งคืน;
-
-
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจเกม;
นำเข้า java.awt.Color;
นำเข้า java.awt.Graphics;
นำเข้า java.awt.event.MouseAdapter;
นำเข้า java.awt.event.MouseEvent;
-
* คลาสของผู้ฟังเมาส์
-
* @ผู้เขียน ผู้ดูแลระบบ
-
-
Listener คลาสสาธารณะขยาย MouseAdapter {
กราฟิกส่วนตัว g;
ส่วนตัว int x = 5, y = 620;
ความกว้าง int ส่วนตัว = 100, ความสูง = 10;
ผู้ฟังสาธารณะ (กราฟิก g) {
นี่.g = g;
-
โมฆะสาธารณะ mouseMoved (MouseEvent e) {
//กำหนดสีวัตถุแคนวาส
ซิงโครไนซ์ (this.g) {
g.setColor(สี.สีดำ);
g.fillRect(x, y, ความกว้าง, ความสูง);
x = e.getX();
g.setColor(java.awt.Color.green);
g.fillRect(x, y, ความกว้าง, ความสูง);
-
-
-
* วิธีรับ x
-
* @return:x
-
สาธารณะ int getX() {
กลับ x;
-
-
เอฟเฟกต์การวิ่งแสดงในรูปด้านล่าง:
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน