Menü für Snakespiel in einzelnem JFrame

  • Themenstarter Javaanfänger12
  • Beginndatum
J

Javaanfänger12

Gast
Hallo,
ich versuche gerade ein JFrame (Menü) zu erstellen, in dem ein Button ist, mit dem man wiederum ein neues JFrame (Spielfeld) öffnen kann.
Der Ansatz funktioniert auch soweit, jedoch bleibt das neue JFrame (Spielfeld) leer.
Eigentlich sollten darin 30 x 30 Buttons sein, die mit ihrer Hintergrundfarbe eine Schlange darstellen (Snakespiel).
Erst wenn die Schlange (die leider nicht zu sehen ist) eine Wand erreicht hat und eine Meldung aufgeht, dass man verloren hat, erscheint das ganze Spielfeld.
Öffne ich das JFrame (Spielfeld) jedoch direkt aus der public static void main(), dann funktioniert alles einwandfrei.

Wie kann ich es schaffen, dass der Inhalt des Spielfeldfensters auch angezeigt wird, wenn es aus einer anderen als der main() Klasse heraus aufgerufen wird?

IDE: Eclipse

Java:
private class klickclassstart implements ActionListener		{
		
		public void actionPerformed(ActionEvent event)	{
			

			Schlange.schlange();
			Labyrinth.feldinhalt();
			Essen.essen();
		
			Spielfeld spielfeld = new Spielfeld();
			spielfeld.setLocation(425, 150);
			spielfeld.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			spielfeld.setSize(380, 400);
			spielfeld.setVisible(true);
			
			Steuern steuern = new Steuern();
			steuern.setLocation(490, 550);
			steuern.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			steuern.setSize(250, 150);
			steuern.setVisible(true);
			
			Tick.tick();	
			
			
		}
		
	}

Das ist die Klasse des Buttons (im Menü), der das eigentliche Spielfeld und zusätzlich ein Steuerungsfenster öffnen soll. Die Fenster gehen zwar in der richtigen Größe und Position auf jedoch bleiben sie vorerst leer.
Eigentlich kann es ja nur daran liegen, dass die JFrames nicht aktualisiert werden, da die Schlage anscheinend im Hintergrund weiterläuft (Sonst könnte sie ja nicht an die Wand laufen)

Vielen dank für jede Hilfe.
 

Fab1

Top Contributor
Auf die Idee eine Schlange mit Buttons darzustellen bin ich auch noch nicht gekommen :)

Wenn sich die Buttons bewegen rufst du dann repaint() und auch validate() auf dem JFrame auf? Wäre so meine erste Vermutung, dass es an dem Validate also neu ausrichten der Komponenten liegt.
 

Kevin94

Top Contributor
Die Signatur von Volvagia drückt dein Problem ziemlich genau aus:
Javanische Bauernregel: Wenn das GUI nicht reagiert, wahrscheinlich der EDT blockiert.

Du musst das ganze in einem eigenen Thread ausführen. Genauer gesagt nur den GameLoop, also den Teil des Codes, der die Schlange bewegt und dann mit sleep den EDT blockiert (auf dem EventListener und das Rendering ausgeführt werden), aber ich blicke nicht ganz welche Methode das bei dir sein soll.
 
J

Javaanfänger12

Gast
Danke für die schnelle Antwort!

Die Klasse, die die Schlange ( Buttonfarbe ) bewegt ist dieser:

Java:
public class Tick{
	
	static int wiederholen = 1;
	static int speed = 500;
	
	public static  void tick()  {
		
		while (wiederholen == 1) {
			
			Schlangenbewegung.bewegen();      //Schlangenarray erneuern							  	
			
			Spielfeld.spielfeldrepaint();    	//Spielfeld erneuern
												
			Steuern.scorelabel();
					
					try {
						
						Thread.sleep(speed);									//Geschwindigkeit der Schlange
						
					} 
					catch (InterruptedException e) {
						
						e.printStackTrace();
						
					}
							
		}
		
	}

Ich habe zwei Arrays: Das eine ist ein Buttonarray und das andere ein Integerarray, beide haben 900 Plätze

Die Klasse Schlangenbewegung (s.o.) verändert die Zahlen im Integerarray je nach dem welche Richtung im Steuerungsframe zuletzt gedrückt wurde.

Danach wird in Abhängigkeit zu den Werten im Integerarray die jeweilige Farbe der Buttons des Buttonarrays angepasst.
Aktualisieren tue ich das indem ich alle Buttons in ein Panel eingefügt habe und dieses dann mit

Java:
 Spielfeld.panel.repaint();

erneuere.

vaidate() habe ich nicht benutzt. Wo müsste ich das dann einbauen?
Komisch ist eben nur, das aktualisieren ohne das vorgeschaltete Menüfenster funktioniert.

Der Loop ist bei mir die Klasse Tick (s.o.). Wie mache ich diese in einen einzelnen Thread?
Ich kenne mich da noch nicht so aus.
 

Kevin94

Top Contributor
Hatte ich mir gedacht. Der GameLoop wird auf dem EDT ausgeführt. Du musst das ganze in einen eigenen Thread packen, z.B. so:

Java:
public class Tick{
    
    static int wiederholen = 1;
    static int speed = 500;
    
    public static  void tick()  {
        new Thread(new Runnable(){
        public void run(){ 
        while (wiederholen == 1) {
            Schlangenbewegung.bewegen();      //Schlangenarray erneuern                             
            Spielfeld.spielfeldrepaint();       //Spielfeld erneuern
            Steuern.scorelabel();
                    try {
                        Thread.sleep(speed);                                    //Geschwindigkeit der Schlange
                    } 
                    catch (InterruptedException e) {
                        e.printStackTrace();
                    }
        }
        }}).start();
        
    }
}
 
J

Javaanfänger12

Gast
Vielen Dank Kevin94!

Genau das war das Problem.

Jetzt funktioniert es genau wie es soll.

Wenn ich jetzt auf den Startbutton im Menü drücke öffnet sich das Spielfeld und wird richtig angezeigt.
Das Menüfenster (Startscreen) soll sich jetzt zusätzlich glechzeitig schließen.
Ich habe es schon mit startscreen.setVisible(false) und startscreen.dispose() probiert aber Eclipse zeigt immer einen Error (bei beiden Varianten wird "startscreen" rot unterstrichen).

Wie schließe ich das JFrame Startscreen sobald ich den Startbutton betätige?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T 2D Menü für 3D Spiel Spiele- und Multimedia-Programmierung 5
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
N Spiele-Menü in Java Spiele- und Multimedia-Programmierung 9
N Spiel Menü error ! Spiele- und Multimedia-Programmierung 5
A Greenfoot.org ; Erstellung von Menü Spiele- und Multimedia-Programmierung 2
D [Softwarearchitektur] Browsergame, Menü Spiele- und Multimedia-Programmierung 2
N Minecraft Frage für einen Minecraft Server Spiele- und Multimedia-Programmierung 2
Drachenbauer Speicher-Tool für ein Spiel schreiben Spiele- und Multimedia-Programmierung 13
B Deepmind Poker Bot für PokerStars konfigurieren? Spiele- und Multimedia-Programmierung 2
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
K Wie bekomme ich eine Transition für alle Objekte zum stoppen? Spiele- und Multimedia-Programmierung 1
E Organisation für Game Spiele- und Multimedia-Programmierung 1
Excess Ballerfisch für Android Spiele- und Multimedia-Programmierung 3
coolian ich brauche irgendeine gui lib für lwjgl2 Spiele- und Multimedia-Programmierung 51
krgewb Anderer Algorithmus für Bounding Box Spiele- und Multimedia-Programmierung 9
MiMa MP3 Dateien für Metadaten abgleichen Spiele- und Multimedia-Programmierung 0
Freshy Bot für Discord Spiele- und Multimedia-Programmierung 61
R Ideen für die Backend-Entwicklung eines Games gesucht Spiele- und Multimedia-Programmierung 8
G Mikrophon-/Audiosteuerung für einen Character Spiele- und Multimedia-Programmierung 1
P Tennis- Spielstand- Zähler für Schule programmieren Spiele- und Multimedia-Programmierung 6
M Logik für ein Quiz Spiele- und Multimedia-Programmierung 7
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
MiMa Metadaten für Multimedia Daten ermitteln Spiele- und Multimedia-Programmierung 4
G Übungsprogramm für Matheaufgaben Spiele- und Multimedia-Programmierung 1
F Algorithmus für bessere Kollisionsabfragen Spiele- und Multimedia-Programmierung 10
S Bilder Für Schachfiguren Spiele- und Multimedia-Programmierung 14
Timo_neu_in_java Suche etwas einfaches für Anfänger Spiele- und Multimedia-Programmierung 6
I Minecraft Suche Plugin Developer für Minecraft Netzwerk! Spiele- und Multimedia-Programmierung 2
S GUI erstellen für Text Adventure Spiele- und Multimedia-Programmierung 4
S Eigene Klasse vec_t - 3 oder 4 Einheiten für x, y, z und w Spiele- und Multimedia-Programmierung 11
R Vererbbarer GameLoop für Engine Spiele- und Multimedia-Programmierung 14
J Vektor für Gravitation erzeugen Spiele- und Multimedia-Programmierung 34
I Minecraft: Craftingrecipe für Braustand ändern Spiele- und Multimedia-Programmierung 9
Z Minimax-Algorithmus für TicTacToe Spiele- und Multimedia-Programmierung 5
H KI für Spiele Spiele- und Multimedia-Programmierung 1
S Pssende Datenstruktur für ein Netz Spiele- und Multimedia-Programmierung 5
S MouseEvents für Sprites Spiele- und Multimedia-Programmierung 3
I Spectator Modus für Spiel ähnlich zu Terraria Spiele- und Multimedia-Programmierung 8
K Bestes Bildformat für Spielegrafiken und deren Einbindung in Java Spiele- und Multimedia-Programmierung 2
J mehrere Listener für einen Button / Label Spiele- und Multimedia-Programmierung 1
C Port umleiten: lesen und schreiben für MCServer-Client über Skype Spiele- und Multimedia-Programmierung 0
J Musik Bibliothek für GUI Spiele- und Multimedia-Programmierung 7
B Hauptmenü für Spiel Spiele- und Multimedia-Programmierung 1
R Ratschlag für 2D-3D Engine für die Spieleentwicklung gesucht Spiele- und Multimedia-Programmierung 4
Androbin KI für Verfolgung im Raster Spiele- und Multimedia-Programmierung 2
A Bot für Browsergame Spiele- und Multimedia-Programmierung 2
H Tutorials für Fortgeschrittene 3D-Anwedungen Spiele- und Multimedia-Programmierung 2
lord239123 suche Graphiker für ein Pokemon-Spiel Spiele- und Multimedia-Programmierung 6
Furtano Vektoren für Bewegung für eine 2D-Simulation Spiele- und Multimedia-Programmierung 3
T Sinusgenerator für eine Hp Spiele- und Multimedia-Programmierung 8
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
Guybrush Threepwood Ketzerische Frage: Opus-Codec für Java Spiele- und Multimedia-Programmierung 14
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
N Animationen für ein 2D game Spiele- und Multimedia-Programmierung 6
S Aufbau für 2D Spiele Spiele- und Multimedia-Programmierung 7
L Client für ein Browsergame Spiele- und Multimedia-Programmierung 21
Devil0s Swing Elemente für Inventar? Spiele- und Multimedia-Programmierung 9
Kenan89 Ansatzfrage: Kartenspiel für 2 Spieler Online Spiele- und Multimedia-Programmierung 3
F Ideen für spiel Spiele- und Multimedia-Programmierung 4
P Spielfeld für RPG Spiele- und Multimedia-Programmierung 15
Hoppelmann Alphamap (Bild) für 3D-Terrain generieren Spiele- und Multimedia-Programmierung 2
S Algorithmus zur Ressourcesuche für die KI Spiele- und Multimedia-Programmierung 5
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
K Einfache Engine für einfaches 3D gesucht Spiele- und Multimedia-Programmierung 10
C KI für Skatspiel - Wie können die Computerspieler eigenständig handeln? Spiele- und Multimedia-Programmierung 10
S Aufbau von Klassen für Spiel Spiele- und Multimedia-Programmierung 13
Kenan89 Kleines Projekt für Java Spiele- und Multimedia-Programmierung 5
M Empfehlungen für ein 2D-Jump'n'run Spiele- und Multimedia-Programmierung 4
A Grundlagensuche für Spiel Spiele- und Multimedia-Programmierung 8
C Wo ist der MP3 Plugin für JMF? Spiele- und Multimedia-Programmierung 3
qwerqer Design Pattern gesucht für Spielregeln Spiele- und Multimedia-Programmierung 2
M Java als Programmiersprache für kommerzielle Spieleentwicklung? Spiele- und Multimedia-Programmierung 3
K Game Engine für selbstprogrammiertes Spiel Spiele- und Multimedia-Programmierung 27
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
A Music für Android game Spiele- und Multimedia-Programmierung 3
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
M Minecraft Suche Java Programmierer (für Minecraft) Spiele- und Multimedia-Programmierung 2
Luk10 Tipps für bessere Animationen / Grafik Engine Spiele- und Multimedia-Programmierung 2
T Grundlagenwissen für den 3D Raum Spiele- und Multimedia-Programmierung 6
I getSubImage sorgt für starken Performanceeinbruch Spiele- und Multimedia-Programmierung 6
M technologie für video, webcam & co Spiele- und Multimedia-Programmierung 25
C Java für große Spiele geeignet ? Spiele- und Multimedia-Programmierung 101
D Libraryempfehlung für Effekte Spiele- und Multimedia-Programmierung 3
B Spiele programmieren für ein Fenster? Spiele- und Multimedia-Programmierung 14
D Tabelle für Spiel Spiele- und Multimedia-Programmierung 3
N Grundlagen für ein Jump&Run Spiele- und Multimedia-Programmierung 3
S Datenbank gesucht für Bilder(gif-dateien) Spiele- und Multimedia-Programmierung 5
J Suche 3D Programm für jMonkeyEngine Spiele- und Multimedia-Programmierung 5
W 3D-APIs für Java - Eine Übersicht Spiele- und Multimedia-Programmierung 8
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
S Game Client für kleine Competition Spiele- und Multimedia-Programmierung 3
F Programm für Bildbearbeitung gesucht: Skalieren und Speichern Spiele- und Multimedia-Programmierung 6
K Lösungsansätze für ein Spiel Spiele- und Multimedia-Programmierung 2
Plastagen Frameworls für Animationen und co Spiele- und Multimedia-Programmierung 3
aze Wie Transform3D für PosPathInterpolator bestimmen Spiele- und Multimedia-Programmierung 8
M Musik für Spiel wo downloaden? Spiele- und Multimedia-Programmierung 7
R Netzwerkstruktur für ein kleines Spiel Spiele- und Multimedia-Programmierung 8
O KI (künstliche Intelligenz) für Schachlogik Spiele- und Multimedia-Programmierung 4
J Brauche denkanstoß für kleines grafikframework Spiele- und Multimedia-Programmierung 3
A Countdown-Timer für Spiel Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben