Javaspel programmering handledning - Flappy fågeln Redux (4 / 12 steg)
Steg 4: Starta enkla
Nu kommer vi börja programmera! * och det fanns mycket glädje * (sorry för cheesy Monty Python humor)
Vi kommer börja med att bygga den primära klassen, som jag kallade TopClass, och vi kommer att bygga bara skelettet som du ser nedan. Allt detta gör hittills är att skapa en full-skärm ram utan innehåll.
Den huvudsakliga metoden skapar helt enkelt en ny tråd som GUI-byggnaden och allmänna spelet funktionen fungerar. Du måste köra ditt spel i en annan tråd att låta GUI bo funktionella. Om du inte gör detta skulle spelet slingan låsa upp gränssnittet, inte så att användaren kan stänga programmet medan du spelar spelet.
Kommentarer bör förklara resten av koden.
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.*;
allmän klass TopClass {
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");
andra globala objekt
privata statisk TopClass tc = nya TopClass();
/**
* 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() {
Här kommer vi att kalla en funktion för att starta spelet
}
};
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()); lägger till det huvudsakliga innehållet i ramen
f.setResizable(true); sant, men spelet fungerar inte korrekt om inte maximerat!
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ör att förhindra kollaps till lilla fönstret på storleksändring
f.setExtendedState(JFrame.MAXIMIZED_BOTH); maximera JFrame
f.setIconImage(icon); ställa in ikonen
}
privat JPanel createContentPane() {
topPanel = nya JPanel(); översta JPanel i layout hierarki
returnera topPanel; returnera en tom panel
}
}