Javaspel programmering handledning - Flappy fågeln Redux (7 / 12 steg)
Steg 7: Konkretiserade spelet: Jag
Vid denna punkt, skapas alla klasser du behöver; du behöver bara att konkretisera TopClass och PlayGameScreen. Börjar med TopClass, kommer vi att slutföra GUI av efterbehandling metoden createContentPane(), som att lägga till ActionListener.
I skapa innehållsrutan, vi först ställa in den topPanel bakgrundsfärg svart eftersom när vi tona spelets skärmen i början av en runda, det är topPanel som visas. Sedan skapar vi en OverlayLayout, som är fördelaktigt eftersom vi kan se till att knappen är på toppen av den grafiska panelen, som annars inte är uppnåeligt. Efter detta har vi instansiera knappen, en global variabel, ändra några inställningar, lägga till en ActionListener, sedan lägga till knappen topPanel. Slutligen, instansiera vi våra globala PlayGameScreen variabel, passerar i skärmbredden, skärmhöjd och ett booleskt värde som anger vi vill startbilden.
Som en del av genomförandet av TopClass med ActionListener, måste vi skapa offentlig metod actionPerformed(ActionEvent e). Detta gör oss förmågan att behandla en åtgärd som har inträffat (dvs knappen att vara klickade).
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;
import java.awt.Color;
import java.awt.LayoutManager;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
allmän klass TopClass implementerar ActionListener {
globala konstant variabler
privata statisk sista int skärmbredd = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
privata statisk sista int SCREEN_HEIGHT = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
globala variabler
globala swing objekt
privat JFrame f = nya JFrame ("Flappy fågeln Redux");
privat JButton startGame;
privat JPanel topPanel; förklarat globalt att rymma måla verksamheten och möjliggöra removeAll(), etc.
andra globala objekt
privata statisk TopClass tc = nya TopClass();
privata statisk PlayGameScreen pgs; panel som har rörliga bakgrunden i början av spelet
/**
* Standardkonstruktör
*/
offentliga TopClass() {
}
/**
* Huvudsakliga körbara metoden anropas när du kör hittar.jar-filen
* args
*/
offentliga statisk void main (String [] args) {
bygga GUI på en ny tråd
javax.swing.SwingUtilities.invokeLater (nya Runnable() {
public void run() {
tc.buildFrame();
skapa en ny tråd för att hålla det grafiska Gränssnittet lyhörd medan spelet körs
Gänga t = nya Thread() {
public void run() {
kör spelet här
}
};
t.start();
}
});
}
/**
-Metoden att bygga JFrame och lägga till programmet innehåll
*/
privata void buildFrame() {
Bildikon = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("resources/blue_bird.png"));
f.setContentPane(createContentPane());
f.setResizable(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setAlwaysOnTop(false);
f.setVisible(true);
f.setMinimumSize (ny Dimension (skärmbredd * 1/4, SCREEN_HEIGHT * 1/4));
f.setExtendedState(JFrame.MAXIMIZED_BOTH);
f.setIconImage(icon);
f.addKeyListener(this);
}
privat JPanel createContentPane() {
topPanel = nya JPanel(); översta JPanel i layout hierarki
topPanel.setBackground(Color.BLACK);
Tillåt oss till lagret paneler:
LayoutManager overlay = nya OverlayLayout(topPanel);
topPanel.setLayout(overlay);
Starta spelet JButton
startGame = ny JButton ("börja spela!");
startGame.setBackground(Color.BLUE);
startGame.setForeground(Color.WHITE);
startGame.setFocusable(false);
startGame.setFont (nya typsnitt ("kaliber", Font.BOLD, 42));
startGame.setAlignmentX(0.5f); Centrera vågrätt på skärmen
startGame.setAlignmentY(0.5f); Centrera lodrätt på skärmen
startGame.addActionListener(this);
topPanel.add(startGame);
måste lägga till sist för att säkerställa knappens synlighet
PGS = nya PlayGameScreen (skärmbredd, SCREEN_HEIGHT, true); sant -> vi vill pgs vara startbilden
topPanel.add(pgs);
returnera topPanel;
}
/**
* Genomförandet för åtgärder händelser
*/
public void actionPerformed (ActionEvent e) {
IF(e.GetSource() == startGame) {
göra något
}
}
}