Das Beispiel in diesem Artikel beschreibt den in Java implementierten Flipper-Spielcode basierend auf Swing. Teilen Sie es als Referenz mit allen.
Die Hauptfunktionscodes lauten wie folgt:
Kopieren Sie den Codecode wie folgt:
Paketspiel;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
java.util.Random importieren;
import javax.swing.ButtonGroup;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButtonMenuItem;
/**
* Spielschnittstellenklasse
*
* @author-Administrator
*
*/
öffentliches Klassenspiel erweitert javax.swing.JFrame {
private static final long serialVersionUID = 1L;
private statische Spiel-Benutzeroberfläche;
private Grafiken g;
privater Listener ml;
öffentliches javax.swing.JLabel text_field;
public javax.swing.JProgressBar pBar;
privater String-Befehl;
public ArrayList<MyThread> list = new ArrayList<MyThread>();
private javax.swing.JToggleButton-Schaltfläche;
public static void main(String args[]) {
UI = neues Spiel();
UI.initUI();
}
/**
* Methode zum Initialisieren des Formulars
*/
public void initUI() {
//Titel festlegen
this.setTitle("Wenn Sie ein Meister sind, bleiben Sie 10 Sekunden dabei");
//Größe festlegen
this.setSize(610, 635);
// Shutdown festlegen, um das Programm zu beenden
this.setDefaultCloseOperation(3);
//Legen Sie fest, dass es beim Öffnen des Formulars in der Mitte des Bildschirms angezeigt wird
this.setLocationRelativeTo(null);
//Legen Sie den Flow-Layout-Manager des Formulars fest
this.setLayout(new java.awt.FlowLayout());
//Legen Sie die Hintergrundfarbe des Formulars fest
this.getContentPane().setBackground(java.awt.Color.black);
//Textbeschriftungsobjekt erstellen
text_field = new javax.swing.JLabel();
javax.swing.JLabel label = new javax.swing.JLabel("Time:");
//Legen Sie die Vordergrundfarbe der Textbeschriftung fest
label.setForeground(java.awt.Color.red);
text_field.setForeground(java.awt.Color.red);
//Fortschrittsbalkenobjekt erstellen
pBar = new javax.swing.JProgressBar(0, 330);
//Schaltflächenobjekt erstellen
button = new javax.swing.JToggleButton();
button.setMargin(new Insets(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));
button.setActionCommand("Pause");
// Aktions-Listener durch anonyme innere Klassen erstellen
java.awt.event.ActionListener button_listener = new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
String com = e.getActionCommand();
if (com.equals("pause")) {
button.setMargin(new Insets(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/start.gif"));
button.setActionCommand("Weiter");
for (int i = 0; i < list.size(); i++) {
list.get(i).PauseThread();
}
}
if (com.equals("continue")) {
button.setMargin(new Insets(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));
button.setActionCommand("Pause");
for (int i = 0; i < list.size(); i++) {
list.get(i).ContinueThread();
}
}
}
};
button.addActionListener(button_listener);
this.add(button);
this.add(label);
this.add(pBar);
this.add(text_field);
// Zur Menüleiste gehen
JMenuBar bar = creatMenuBar();
//Legen Sie die Menüleiste für das Formular fest
this.setJMenuBar(bar);
//Legen Sie die Sichtbarkeit des Formulars fest
this.setVisible(true);
}
/**
* So erstellen Sie eine Menüleiste
*
* @zurückkehren
*/
public JMenuBar creatMenuBar() {
//Menüleistenobjekt erstellen
JMenuBar bar = new JMenuBar();
//Menüobjekt erstellen
JMenu menu_menu = new JMenu("menu");
JMenu schwierigkeit_menu = new JMenu("Schwierigkeit");
JMenu help_menu = new JMenu("Help");
//Menüoptionsobjekt erstellen
JMenuItem star_item = new JMenuItem("Start");
JMenuItem exit_item = new JMenuItem("Exit");
JMenuItem help_item = new JMenuItem("Game Description");
JMenuItem about_item = new JMenuItem("about");
//Radiooptionen erstellen
JRadioButtonMenuItem easy_item = neues JRadioButtonMenuItem(
"Einfach");
JRadioButtonMenuItem middle_item = neues JRadioButtonMenuItem(
"Medium");
JRadioButtonMenuItem hard_item = neues JRadioButtonMenuItem(
"Schwierigkeit");
//Eine Schaltflächengruppe erstellen
ButtonGroup-Gruppe = new ButtonGroup();
// Das Optionsfeld zur Schaltflächengruppe hinzufügen
group.add(easy_item);
group.add(middle_item);
group.add(hard_item);
// Optionsfelder zum Menü hinzufügen
schwierigkeit_menu.add(easy_item);
schwierigkeit_menu.add(middle_item);
schwierigkeit_menu.add(hard_item);
// Aktions-Listener durch anonyme innere Klassen erstellen
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
command = e.getActionCommand();
// Wenn Start ausgewählt ist, erstellen Sie das Thread-Objekt
if (command.equals("start") && list.size() == 0) {
creatBall(20, 1);
}
// Wenn die Exit-Schaltfläche ausgewählt ist, beenden Sie das Programm
if (command.equals("Exit")) {
System.exit(0);
}
// Wenn die einfache Schaltfläche ausgewählt ist
if (command.equals("simple") && list.size() == 0) {
creatBall(20, 1);
}
// Wenn die mittlere Schaltfläche ausgewählt ist
if (command.equals("medium") && list.size() == 0) {
creatBall(50, 2);
}
if (command.equals("difficulty") && list.size() == 0) {
creatBall(40, 2);
}
if (command.equals("Spielbeschreibung")) {
JOptionPane.showMessageDialog(null,
„Bewegen Sie die Maus und nutzen Sie die Abschirmung, um den Ball zu fangen. Wenn Sie ihn nicht fangen können, verlieren Sie.../nDas Spiel kann einen Schwierigkeitsgrad wählen, einschließlich leicht, mittel und schwer“);
}
if (command.equals("about")) {
JOptionPane
.showMessageDialog(null,
„Dies ist ein kleines, in Java geschriebenes Spiel.../nProduzent: Shen Guanjun/nZeitpunkt: August 2010/nUrheberrecht, jede Reproduktion wird untersucht!“);
}
}
};
//Aktions-Listener hinzufügen
star_item.addActionListener(listener);
exit_item.addActionListener(listener);
easy_item.addActionListener(listener);
middle_item.addActionListener(listener);
hard_item.addActionListener(listener);
help_item.addActionListener(listener);
about_item.addActionListener(listener);
//Fügen Sie das Menüoptionsobjekt zum Menüobjekt hinzu
menu_menu.add(star_item);
menu_menu.add(exit_item);
help_menu.add(help_item);
help_menu.add(about_item);
//Fügen Sie das Menüobjekt zur Menüleiste hinzu
bar.add(menu_menu);
bar.add(difficulty_menu);
bar.add(help_menu);
// Das Menüleistenobjekt zurückgeben
Rücklaufsperre;
}
/**
* Methode zum Erstellen eines Thread-Objekts
*
* @param Geschwindigkeit
* :Geschwindigkeit
*
*/
public void creatBall(int speed, int num) {
Random ran = new Random();
if (ml == null) {
g = UI.getGraphics();
ml = neuer Listener(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, speed);
list.add(th);
th.start();
}
}
/**
* So erhalten Sie den Befehl
*/
öffentlicher String getCommand() {
Rückkehrbefehl;
}
}
Kopieren Sie den Codecode wie folgt:
Paketspiel;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Klasse des Maus-Listeners
*
* @author-Administrator
*
*/
Der Listener der öffentlichen Klasse erweitert MouseAdapter {
private Grafiken g;
private int x = 5, y = 620;
private int Breite = 100, Höhe = 10;
public Listener(Graphics g) {
this.g = g;
}
public void mouseMoved(MouseEvent e) {
//Legen Sie die Farbe des Canvas-Objekts fest
synchronisiert (this.g) {
g.setColor(Color.black);
g.fillRect(x, y, width, height);
x = e.getX();
g.setColor(java.awt.Color.green);
g.fillRect(x, y, width, height);
}
}
/**
* Methode, um x zu erhalten
*
* @return:x
*/
public int getX() {
x zurückgeben;
}
}
Der Laufeffekt ist in der folgenden Abbildung dargestellt:
Ich hoffe, dass dieser Artikel für die Java-Programmierung aller hilfreich sein wird.