Ich habe für die Universität ein Java-Seminar für Anfänger gemacht und soll dafür in einer Kleingruppe ein lauffähiges Programm prgrammieren. Das heißt,alle aus meiner Gruppe haben ihr "Wissen" nur aus dem Seminar und durch Online-Tutorials. Dabei haben wir folgendes Problem und wir verwenden dafür im übrigen eclipse, falls die Info notwendig ist:
Wir haben also ein Paket mit diversen Klassen für unser 2D-Rennspiel angelegt. Die Klasse "Game" dient dazu, das Spielfenster zu öffnen und mit den anderen Spielbezogen Klassen zu kommunizieren. Als nächstes haben wir ein "Menue" angelegt, das einen Start-Button hat, von dem aus die Klasse Game und somit das Spiel gestartet werden soll.
In der Klasse "Menue" haben wir danach den Befehl eingefügt:
Spoiler
Show
if (e.getSource()== starten) {
this.setVisible(false); // Fenster "schliessen"
Game Game = new Game(); // Spiel starten
Game.run();
}
this.setVisible(false); // Fenster "schliessen"
Game Game = new Game(); // Spiel starten
Game.run();
}
Spoiler
Show
public class Game {
static int width=800;
static int hight=600;
public static void main(String[] args) {
Frame frame= new Frame(); // Fenster wird erzeugt
frame.setSize(width, hight); // Größe wird festgelegt
frame.setDefaultCloseOperation(Frame.EXIT_ON_CLOSE); // Prozess wird bei x beendet 3 = EXIT_ON_CLOSE
System.out.println();
frame.setLocationRelativeTo(null); // in die Mitte
frame.setResizable(false); // nicht veränderbar
//frame.setUndecorated(true); // Rand wird entfernt
frame.setVisible(true); // wird sichtbar gemacht
frame.setTitle("Race"); // Titel meines Fensters
frame.makestrat(); // buffer strategy
// in while schleife läuft das spiel immer erst aktualisieren, dann zeichnen
//long lastFrame = System.currentTimeMillis(); // misst Zeit, damit sich spieler immer gleich schnell bewegt
while (true){
//benutzereingabe
frame.update();
//zeichnen
frame.repaint();
//warten Epsiode 3 // gibt an, wie oft geupdated wird
try{
Thread.sleep(4); //hier ändern, wenn das spiel schneller sein soll
} catch (InterruptedException e){
e.printStackTrace();
}
}
}
}
static int width=800;
static int hight=600;
public static void main(String[] args) {
Frame frame= new Frame(); // Fenster wird erzeugt
frame.setSize(width, hight); // Größe wird festgelegt
frame.setDefaultCloseOperation(Frame.EXIT_ON_CLOSE); // Prozess wird bei x beendet 3 = EXIT_ON_CLOSE
System.out.println();
frame.setLocationRelativeTo(null); // in die Mitte
frame.setResizable(false); // nicht veränderbar
//frame.setUndecorated(true); // Rand wird entfernt
frame.setVisible(true); // wird sichtbar gemacht
frame.setTitle("Race"); // Titel meines Fensters
frame.makestrat(); // buffer strategy
// in while schleife läuft das spiel immer erst aktualisieren, dann zeichnen
//long lastFrame = System.currentTimeMillis(); // misst Zeit, damit sich spieler immer gleich schnell bewegt
while (true){
//benutzereingabe
frame.update();
//zeichnen
frame.repaint();
//warten Epsiode 3 // gibt an, wie oft geupdated wird
try{
Thread.sleep(4); //hier ändern, wenn das spiel schneller sein soll
} catch (InterruptedException e){
e.printStackTrace();
}
}
}
}