Ich brauche Hilfe, um zu verstehen, wie man ein Spiel neu startet. Ich folge einem Tutorial im Buch Killer Game Programming in Java, und ich möchte ein Spiel neu starten, ohne das Spiel zu beenden und das Spiel erneut zu starten. Ich habe Schwierigkeiten zu verstehen, welchen Teil des Codes ich neu initialisieren muss, um ein neues Spiel zu starten. Ich versuche einen Weg zu finden, der es mir erlaubt, meine Gamestats zu behalten, aber das Spiel zurückzusetzen. Jetzt weiß ich nur, wie ich das Spiel zurücksetzen kann, da ich noch keine Statistiken habe.Welche Rolle in meinem Code spielt das Neustarten des Spiels?
Ich habe dies ein Keylistener, wo ich "N" drücken möchte, um das Spiel neu zu starten.
if(e.getKeyCode() == KeyEvent.VK_N){
newGame();
Meine Frage ist, Was soll die newGame()
das Spiel neu zu starten, tun?
Dieser Code wird nicht ausgeführt, da ich versucht habe, alles zu entfernen, von dem ich glaube, dass es für meine Frage nicht relevant ist.
Hoffe, dass ich nicht zu viel haben entfernen: S
Hauptklasse
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class WormChase extends JFrame implements WindowListener
{
private WormPanel wp; // where the worm is drawn
public WormChase(long period)
{ super("The Worm Chase");
makeGUI(period);
pack();
setResizable(false);
setVisible(true);
} // end of WormChase() constructor
// ----------------------------------------------------
public static void main(String args[])
{
int fps = DEFAULT_FPS;
if (args.length != 0)
fps = Integer.parseInt(args[0]);
long period = (long) 1000.0/fps;
System.out.println("fps: " + fps + "; period: " + period + " ms");
new WormChase(period*1000000L); // ms --> nanosecs
}
} // end of WormChase class
Die zweite Klasse
public class WormPanel extends JPanel implements Runnable
{
private static final int PWIDTH = 500; // size of panel
private static final int PHEIGHT = 400;
private Thread animator; // the thread that performs the animation
private WormChase wcTop;
private Worm fred; // the worm
private Obstacles obs; // the obstacles
public WormPanel(WormChase wc, long period)
{
wcTop = wc;
this.period = period;
// create game components
addKeyListener(new KeyListener() {
if(e.getKeyCode() == KeyEvent.VK_N){
newGame();
}
});
}
public void addNotify()
// wait for the JPanel to be added to the JFrame before starting
{ super.addNotify(); // creates the peer
startGame(); // start the thread
}
private void startGame()
// initialise and start the thread
{
if (animator == null || !running) {
animator = new Thread(this);
animator.start();
}
} // end of startGame()
private void newGame()
// initialise and start the thread
{
public void run()
/* The frames of the animation are drawn inside the while loop. */
{
running = true;
while(running) {
gameUpdate();
gameRender();
paintScreen();
}
}
} // end of WormPanel class
Ihr Code ist viel zu unvollständig, um einen besseren Ratschlag geben zu können als Code nach [MVC] (https://en.wikipedia.org/wiki)/Modell% E2% 80% 93view% E2% 80% 93controller) und es sollte ziemlich einfach sein, ein neues Spiel zu starten. – Paul
Oh nein, ich hatte gehofft, ich hätte es genug vereinfacht! Nun gut – tore
@paul auch, danke für die Einstellung mich in Richtung MVC :) – tore