L'exemple de cet article décrit le code du jeu de flipper implémenté en Java basé sur le swing. Partagez-le avec tout le monde pour votre référence.
Les principaux codes de fonction sont les suivants :
Copiez le code comme suit :
jeu de paquet;
importer java.awt.Graphics ;
importer java.awt.Insets ;
importer java.awt.event.ActionEvent ;
importer java.awt.event.ActionListener ;
importer java.util.ArrayList ;
importer java.util.Random ;
importer javax.swing.ButtonGroup ;
importer javax.swing.JMenu ;
importer javax.swing.JMenuBar ;
importer javax.swing.JMenuItem ;
importer javax.swing.JOptionPane ;
importer javax.swing.JRadioButtonMenuItem ;
/**
* Classe d'interface de jeu
*
* @auteur Administrateur
*
*/
Le jeu de classe publique étend javax.swing.JFrame {
privé statique final long serialVersionUID = 1L ;
Interface utilisateur de jeu statique privée ;
graphiques privés g;
écouteur privé ml ;
public javax.swing.JLabel text_field ;
public javax.swing.JProgressBar pBar;
commande de chaîne privée ;
public ArrayList<MyThread> list = new ArrayList<MyThread>();
bouton privé javax.swing.JToggleButton ;
public static void main(String args[]) {
UI = nouveau jeu ();
UI.initUI();
}
/**
* Méthode pour initialiser le formulaire
*/
public void initUI() {
//Définir le titre
this.setTitle("Si vous êtes un maître, respectez-le pendant 10 secondes");
//Définir la taille
this.setSize(610, 635);
// Définir l'arrêt pour quitter le programme
this.setDefaultCloseOperation(3);
//Défini pour afficher au milieu de l'écran lorsque le formulaire est ouvert
this.setLocationRelativeTo(null);
//Définit le gestionnaire de présentation de flux du formulaire
this.setLayout(nouveau java.awt.FlowLayout());
//Définit la couleur d'arrière-plan du formulaire
this.getContentPane().setBackground(java.awt.Color.black);
//Créer un objet d'étiquette de texte
text_field = new javax.swing.JLabel();
javax.swing.JLabel label = new javax.swing.JLabel("Heure:");
//Définit la couleur de premier plan de l'étiquette de texte
étiquette.setForeground(java.awt.Color.red);
text_field.setForeground(java.awt.Color.red);
//Créer un objet barre de progression
pBar = nouveau javax.swing.JProgressBar(0, 330);
//Créer un objet bouton
bouton = nouveau javax.swing.JToggleButton();
bouton.setMargin(new Insets(0, 0, 0, 0));
bouton.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));
bouton.setActionCommand("Pause");
// Créer des écouteurs d'action via des classes internes anonymes
java.awt.event.ActionListener bouton_listener = nouveau java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
String com = e.getActionCommand();
if (com.equals("pause")) {
bouton.setMargin(new Insets(0, 0, 0, 0));
bouton.setIcon(new javax.swing.ImageIcon("images/start.gif"));
bouton.setActionCommand("Continuer");
pour (int i = 0; i < list.size(); i++) {
list.get(i).PauseThread();
}
}
if (com.equals("continue")) {
bouton.setMargin(new Insets(0, 0, 0, 0));
bouton.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));
bouton.setActionCommand("Pause");
pour (int i = 0; i < list.size(); i++) {
list.get(i).ContinueThread();
}
}
}
} ;
bouton.addActionListener(button_listener);
this.add(bouton);
this.add(étiquette);
this.add(pBar);
this.add(text_field);
// Va dans la barre de menu
Barre JMenuBar = creatMenuBar();
//Définit la barre de menu du formulaire
this.setJMenuBar(bar);
//Définit la visibilité du formulaire
this.setVisible(true);
}
/**
* Comment créer une barre de menu
*
* @retour
*/
public JMenuBar creatMenuBar() {
//Créer un objet de barre de menu
Barre JMenuBar = new JMenuBar();
//Créer un objet de menu
JMenu menu_menu = new JMenu("menu");
JMenu difficulté_menu = new JMenu("Difficulté");
JMenu help_menu = new JMenu("Aide");
//Créer un objet d'option de menu
JMenuItem star_item = new JMenuItem("Démarrer");
JMenuItem exit_item = new JMenuItem("Quitter");
JMenuItem help_item = new JMenuItem("Description du jeu");
JMenuItem about_item = new JMenuItem("à propos");
//Créer des options radio
JRadioButtonMenuItem easy_item = nouveau JRadioButtonMenuItem(
"Simple");
JRadioButtonMenuItem middle_item = nouveau JRadioButtonMenuItem(
"moyen");
JRadioButtonMenuItem hard_item = nouveau JRadioButtonMenuItem(
"difficulté");
//Créer un groupe de boutons
Groupe ButtonGroup = new ButtonGroup();
// Ajoute le bouton radio au groupe de boutons
group.add(easy_item);
group.add(middle_item);
group.add(hard_item);
// Ajout de boutons radio au menu
difficulté_menu.add(easy_item);
difficulté_menu.add(middle_item);
difficulté_menu.add(hard_item);
// Créer des écouteurs d'action via des classes internes anonymes
Écouteur ActionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
commande = e.getActionCommand();
// Si start est sélectionné, crée l'objet thread
if (command.equals("start") && list.size() == 0) {
creatBall(20, 1);
}
// Si le bouton Quitter est sélectionné, quittez le programme
if (command.equals("Quitter")) {
Système.exit(0);
}
// Si un bouton simple est sélectionné
if (command.equals("simple") && list.size() == 0) {
creatBall(20, 1);
}
// Si le bouton moyen est sélectionné
if (command.equals("medium") && list.size() == 0) {
creatBall(50, 2);
}
if (command.equals("difficulty") && list.size() == 0) {
creatBall(40, 2);
}
if (command.equals("Description du jeu")) {
JOptionPane.showMessageDialog(null,
"Déplacez la souris et utilisez le déflecteur pour attraper la balle. Si vous ne pouvez pas l'attraper, vous perdez.../nLe jeu peut choisir la difficulté, notamment facile, moyenne et difficile");
}
if (command.equals("about")) {
JOptionPane
.showMessageDialog(null,
"Il s'agit d'un petit jeu écrit en Java.../nProducteur : Shen Guanjun/nHeure : août 2010/nCopyright, toute reproduction fera l'objet d'une enquête !");
}
}
} ;
//Ajouter un écouteur d'action
star_item.addActionListener(écouteur);
exit_item.addActionListener(écouteur);
easy_item.addActionListener(écouteur);
middle_item.addActionListener(écouteur);
hard_item.addActionListener(écouteur);
help_item.addActionListener(écouteur);
about_item.addActionListener(écouteur);
//Ajoute l'objet option de menu à l'objet de menu
menu_menu.add(star_item);
menu_menu.add(exit_item);
help_menu.add(help_item);
help_menu.add(about_item);
//Ajoute l'objet menu à la barre de menu
bar.add(menu_menu);
bar.add(difficulté_menu);
bar.add(help_menu);
// Renvoie l'objet de la barre de menu
barre de retour ;
}
/**
* Méthode pour créer un objet thread
*
* Vitesse @param
* :vitesse
*
*/
public void creatBall (int vitesse, int num) {
Random run = new Random();
si (ml == nul) {
g = UI.getGraphics();
ml = nouvel écouteur (g);
UI.addMouseListener(ml);
UI.addMouseMotionListener(ml);
}
pour (int je = 0; je < num; i++) {
int x = ran.nextInt(600) + 10 ;
int y = ran.nextInt(300) + 100 ;
MonThread th = new MyThread(g, ml, UI, x, y, speed);
list.add(th);
th.start();
}
}
/**
* Comment obtenir la commande
*/
chaîne publique getCommand() {
commande de retour ;
}
}
Copiez le code comme suit :
jeu de paquet;
importer java.awt.Color ;
importer java.awt.Graphics ;
importer java.awt.event.MouseAdapter ;
importer java.awt.event.MouseEvent ;
/**
* Classe d'auditeur de souris
*
* @auteur Administrateur
*
*/
public class Listener étend MouseAdapter {
graphiques privés g;
privé int x = 5, y = 620 ;
private int largeur = 100, hauteur = 10 ;
public Listener (Graphiques g) {
ceci.g = g;
}
public void mouseMoved (MouseEvent e) {
//Définit la couleur de l'objet canevas
synchronisé (this.g) {
g.setColor(Couleur.noir);
g.fillRect(x, y, largeur, hauteur);
x = e.getX();
g.setColor(java.awt.Color.green);
g.fillRect(x, y, largeur, hauteur);
}
}
/**
* Méthode pour obtenir x
*
* @retour:x
*/
public int getX() {
renvoyer x ;
}
}
L'effet de course est illustré dans la figure ci-dessous :
J'espère que cet article sera utile à la programmation Java de chacun.