# SNAKE-GAME-LOOP / (Applet zu Application)



## JavaAmateur97 (7. Jun 2020)

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!)


----------



## mihe7 (7. Jun 2020)

JavaAmateur97 hat gesagt.:


> 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.



JavaAmateur97 hat gesagt.:


> 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


----------



## JavaAmateur97 (7. Jun 2020)

Erstmal Danke für deine Antwort. Und eigentlich dachte ich, ich hätte die Pfade entfernt. :-/ 



mihe7 hat gesagt.:


> 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


----------



## mihe7 (7. Jun 2020)

JavaAmateur97 hat gesagt.:


> dass gar nicht Objektorientiert lösen ,sondern muss die Klassen SnakeGame komplett abändern?


Ja, ich denke schon. Applet ist tot.


----------



## Blender3D (8. Jun 2020)

JavaAmateur97 hat gesagt.:


> 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?


https://www.java-forum.org/thema/snake-game-verbessern.187009/#post-1208176


----------

