SNAKE-GAME-LOOP / (Applet zu Application)

JavaAmateur97

Neues Mitglied
Hallo, ich bin noch ein Einsteiger was das Programmieren mit JAVA angeht.
Nun habe ich mich mal an den Klassiker "Snake" gewagt und viel Zeit und Nerven investiert. So viel erstmal zu meinen Kenntnissen.

Jetzt zu meinen eigentlichen Fragen:
Wie kann ich hier in meinem Code das Spiel so gestalten, dass ich mit der ENTER-Taste (nach dem mir GAME OVER und der SCORE und HIGHSCORE angezeigt wurde) ein neues Spiel beginnen kann?
Meine Versuche mit gfx.clearRect(0, 0, width, height); in meiner Paint Methode sind gescheitert.

Meine zweite Frage wäre wie mein MainFile zum Anführen des Applet mit JPanel/ JFrame aussehen müsste damit ich eine runnable .jar Datei erstellen kann.

Danke euch schonmal für eure Mühen.

P.s. Anbei mein Code (Verbessern, auf hübschen erwünscht!)
 

Anhänge

Wie kann ich hier in meinem Code das Spiel so gestalten, dass ich mit der ENTER-Taste (nach dem mir GAME OVER und der SCORE und HIGHSCORE angezeigt wurde) ein neues Spiel beginnen kann?
Im einfachsten Fall prüft Dein keyPressed ab, ob gameOver gilt und die ENTER-Taste gedrückt wurde.

Meine zweite Frage wäre wie mein MainFile zum Anführen des Applet mit JPanel/ JFrame aussehen müsste damit ich eine runnable .jar Datei erstellen kann.

Im Wesentlichen: statt Applet erweiterst Du z. B. JPanel. Statt paint überschreibst Du dabei paintComponent. Dann erzeugst Du einen JFrame und fügst das SnakeGame-Obekt hinzu. Außerdem solltest Du Ressourcen über den ClassLoader laden, z. B. getClass().getResource("/images/START-PICTURE.jpg"), damit sie aus dem Jar geladen werden. Der Rest dürfte so bleiben können, wie er ist (zumindest ist mir beim Überfliegen jetzt nichts AWT- bzw. Swing-spezifisches mehr aufgefallen). Generell solltest Du aber Deine Pfade entfernen 🙂
 
Erstmal Danke für deine Antwort. Und eigentlich dachte ich, ich hätte die Pfade entfernt. :-/

Im einfachsten Fall prüft Dein keyPressed ab, ob gameOver gilt und die ENTER-Taste gedrückt wurde.

Das hatte ich auch schon versucht und auch bereits Implementiert, dann aber wieder verworfen weil ich es einfach nicht hinbekommen habe. (Ich weiß, da einfach nicht mehr weiter)

Im Wesentlichen: statt Applet erweiterst Du z. B. JPanel. Statt paint überschreibst Du dabei paintComponent. Dann erzeugst Du einen JFrame und fügst das SnakeGame-Obekt hinzu. Außerdem solltest Du Ressourcen über den ClassLoader laden, z. B. getClass().getResource("/images/START-PICTURE.jpg"), damit sie aus dem Jar geladen werden. Der Rest dürfte so bleiben können, wie er ist (zumindest ist mir beim Überfliegen jetzt nichts AWT- bzw. Swing-spezifisches mehr aufgefallen). Generell solltest Du aber Deine Pfade entfernen 🙂

Ich habe das ganze mal probiert und jetzt folgenden Code :

package snakeGame;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Panel extends JFrame {

private static final long serialVersionUID = 1L;

public Panel() {
setTitle("Snake-Game");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 400);

//JPanel mainPanel = new JPanel();
JFrame farme =new JFrame();

SnakeGame snake = new SnakeGame();

//snake.init();

farme.add(snake);

//pack();

}

}

Mein MainFile sieht wie folgt aus:

package snakeGame;

public class MainFile {

public static void main(String[] args) {
Panel Panel = new Panel();
Panel.setVisible(true);

}

}

Leider öffnet sich ledige ein leeres Fenster. Mir werden auch keine Fehler angezeigt. Mache ich viellicht einen Fehler mit meinem Snake Objekt ? oder kann ich ,dass gar nicht Objektorientiert lösen ,sondern muss die Klassen SnakeGame komplett abändern? (Das wollte ich eigentlich vermeiden :-/ )

Danke 🙂
 

Zurück
Oben