In einer While-Schleife auf Event warten

Juergen-87

Mitglied
Hallo,

ich programmiere ein kleines Kartenspiel das in drei Runden abläuft.
Innerhalb der Runde werden immer zwei Karten aufgedeckt, von denen sich der Spieler für eine entscheiden soll. Gegen die muss er kämpfen.
Das passiert solange, bis ein Kartenstapel alle ist, dann beginnt die neue Runde.

Beim Aufdecken der Karten wird ein neuer Frame geöffnet, in dem die Karten angezeigt werden. Dann wird per Button-Klick eine davon ausgewählt. Jetzt habe ich das Problem, dass nach dem Aufdecken der Karten gewartet werden soll, bis ein Button gedrückt wird. Wie kann ich das machen??? Geht das nur über Threads (habe ich bisher noch nie verwendet (Anfänger :oops:)) oder gibt es noch eine andere Lösung?
Wenn es nur über Threads geht, wie kann man so einen Wartethread denn möglichst einfach umsetzen? Ich brauche ihn im weiteren Spielverlauf auch noch an anderen Stellen.

Oder wäre es besser, das Spiel gar nicht über Schleifen zu steuern, sondern sich irgendwie direkt von einem Event zum nächsten zu hangeln und zwischendurch immer abfragen, ob der Kartenstapel leer ist?

So sieht die Hauptspiel-Schleife bei mir aus:
Java:
for (int i = 1; i<=3;i++){
			runde.setText("Runde: "+i+"/3");
			while(gefahrenkartenStapel.size()>0){
				JFrame gegnerAuswahl = new JFrame();
				JButton karteEins = new JButton();
				JButton karteZwei = new JButton();
				gegnerAuswahl.setSize(300, 300);
				karteEins.setText((gefahrenkartenStap.pop()).toString());
				karteZwei.setText((gefahrenkartenStapel.pop()).toString());
				gegnerAuswahl.setLayout(new GridLayout(1,2));
				gegnerAuswahl.add(karteEins);
				gegnerAuswahl.add(karteZwei);
				gegnerAuswahl.setVisible(true);
				spielFrameAktualisieren();
//TODO Hier wird der Kampf gegen die Karte umgesetzt
			}
		}

Das ist alles noch bissel provisorisch zum Testen. Eigentlich werden dann auf den Buttons Bilder angezeigt.
 

Ruzmanz

Top Contributor
Wenn du anstatt dem JFrame einen modalen JDialog verwendest, hat der Anwender keine Möglichkeit etwas anderes außerhalb des "Popups" (Kartenauswahl) zu machen. Ist es das, was du willst?
 

Juergen-87

Mitglied
An der Stelle würde das vielleicht reichen. Aber kann ich den Buttons eines JDialog auch Bilder zuweisen? Ich dachte, da geht nur Ja oder Nein und ich schreibe noch etwas Text dazu...
Und jetzt poppen mir alle JFrames auf einmal auf (bis der Stapel leer ist). Wäre das denn bei dem JDialog nicht auch so, oder stoppt der wirklich die Schleife, bis ich einen Button geklickt habe?

Im weiteren Verlauf brauche ich dann beim Kampf gegen die ausgewählte Karte auch noch eine Möglichkeit, dass die Spiel-Schleife solange aussetzt, bis der Kampf beendet ist. Ich könnte das ja z.B. über einen ActionListener machen, der dann die Kampfaktion startet, wenn ich bei meinem Auswahlfenster eine Karte ausgewählt habe. Soweit ich weiß, wird doch bei einem ActionEvent auch ein neuer Thread gestartet, der erst abgearbeitet wird, bevor das Hauptprogramm weitergeht. Aber jetzt steht wieder die Frage, ob ich einem Button im JDialog einen ActionListener zuordnen kann???
 

Bug Fisher

Bekanntes Mitglied
Ich würde dir raten, ersteinmal NICHT an den SPIELABLAUF zu denken, sondern nur die GUI zu bauen.
Und zwar so, dass nicht jedesmal, alles neu erstellt wird (sag mal, flackert das nicht ? :))
Du erzeugst ja haufenweise Fenster.

Erzeuge EIN Fenster, packe die Buttons drauf und gucke, dass du die actionPerformed() aus ActionListener implementierst, sodass du weisst, was wo passiert, wenn ein Button gedrückt wird.

Dann kannst du zum Spielablauf kommen, und zwar so, dass du das EINE vorhandene Fenster entsprechend modifizierst (bzw. dessen JButtons) und nicht jedesmal einfach ein komplett neues auf den heap und den Bildschirm packst.

Wenn du so wie jetzt quick and dirty weitermachen willst, dann haben meine Vorredner recht; nimm einen Dialog, achte auf die Eigenschaft 'modal' (auf true setzen) und du siehst direkt den Unterschied.

Also die Zeile einfach abändern nach
Java:
final JDialog gegnerAuswahl = new JDialog(null, true);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
YangLee Ausgabe von einer Bewegung bei mehrzeiligen Strings Spiele- und Multimedia-Programmierung 1
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
M Audio Track einer Musik CD abspielen mittels vlcj-Bibliothek Spiele- und Multimedia-Programmierung 0
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
D Programmierung einer Tor-Anzeige Spiele- und Multimedia-Programmierung 8
C Optimale Wegberechnung einer KI Spiele- und Multimedia-Programmierung 6
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
R Einfärben von Gemeinden auf einer Karte Spiele- und Multimedia-Programmierung 14
S ECS: "deep copy" einer Entity-Vorlage Spiele- und Multimedia-Programmierung 9
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
J Frage zum Einlesen einer .wav in ein byte Array Spiele- und Multimedia-Programmierung 3
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
M Kamera "am Rande einer Kugel bewegen" Spiele- und Multimedia-Programmierung 4
B Den KeyListener in einer JavaFXML Application benutzen Spiele- und Multimedia-Programmierung 2
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
M Scrolling einer 2D Map Spiele- und Multimedia-Programmierung 8
TheSorm Collision an einer bestimmten Seite eine Rectangles abfragen Spiele- und Multimedia-Programmierung 3
windl Frage zu Airplay und zur Mitarbeit bei einer Mediaanlage Spiele- und Multimedia-Programmierung 0
A Aufbau einer JOGL Anwendung Spiele- und Multimedia-Programmierung 12
L Werte aus einer .yml Datei lesen Spiele- und Multimedia-Programmierung 9
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
F Download und Update einer Java-Anwendung Spiele- und Multimedia-Programmierung 10
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
B Video von einer IP kamera Spiele- und Multimedia-Programmierung 5
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
W Rotation aller Objekte einer 3D-Szene Spiele- und Multimedia-Programmierung 8
2 Ein Zufallsweg bzw. Weg in einer 2dim Matrix finden. Spiele- und Multimedia-Programmierung 21
aze Schnittmenge zwischen Linie und einer Area wegschneiden Spiele- und Multimedia-Programmierung 3
A Bild einer Webcam auffangen Spiele- und Multimedia-Programmierung 20
G Ballerkennung aus einer Bilddatei Spiele- und Multimedia-Programmierung 24
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
M Realisierung einer Sichtweise in Java2D Spiele- und Multimedia-Programmierung 3
B String zu Objekt einer eigenen Klasse casten Spiele- und Multimedia-Programmierung 13
H Screenshot einer Graphics2D Anwendung erstellen Spiele- und Multimedia-Programmierung 6
F Simulation einer Magnetischen Flasche Spiele- und Multimedia-Programmierung 17
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
J Fehlverhalten einer Spielfigur Spiele- und Multimedia-Programmierung 7
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
M Das Frequenzspektrum einer WAV/MP3-Datei anzeigen Spiele- und Multimedia-Programmierung 6
M Rechteck erkennung innerhalb einer Matix Spiele- und Multimedia-Programmierung 4
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
E Pinball Abprall an einer schrägen Bande Spiele- und Multimedia-Programmierung 19
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
A Tutorial für die Entwicklung einer Fussball-KI gesucht Spiele- und Multimedia-Programmierung 7
S Rotation relativ zur Rotation einer anderen Transform Group Spiele- und Multimedia-Programmierung 3
A Screenshots von einer Scene erstellen Spiele- und Multimedia-Programmierung 5
G Land aus einer Weltkarte selektieren Spiele- und Multimedia-Programmierung 10
D Kräftesimulation auf einer 2D-Oberfläche Spiele- und Multimedia-Programmierung 5
T Geschwindigkeit einer Animation aendern Spiele- und Multimedia-Programmierung 6
G Ermitteln eines Punktes in einer anderen TransformGroup Spiele- und Multimedia-Programmierung 2
N Background in Java3D ähnlich einer Skybox erzeugen Spiele- und Multimedia-Programmierung 5
H zB Punkte darstellen und mit einer Linier verbinden Spiele- und Multimedia-Programmierung 5
F Darstellung einer tierischen Zelle Spiele- und Multimedia-Programmierung 3
S Text an einer Seite eines Cubes Spiele- und Multimedia-Programmierung 7
F Das SPiel ruckelt nach einer Zeit Spiele- und Multimedia-Programmierung 19
D wieder einer von anfang an. Spiele- und Multimedia-Programmierung 4
M Darstellung einer schwingenden Membran? Spiele- und Multimedia-Programmierung 23
raptorrs Teile einer CAD-Assembly Gruppe in JAVA animieren? Spiele- und Multimedia-Programmierung 3
K Beschriftung von Punkten in einer "Punktwolke" Spiele- und Multimedia-Programmierung 2
S Zur Laufzeit auf die Methode einer anderen Klasse zugreifen Spiele- und Multimedia-Programmierung 5
K Klick in der nähe einer Strecke Spiele- und Multimedia-Programmierung 14
A While schleife "or" probelm Spiele- und Multimedia-Programmierung 2
A while Schleife - illegal start of type. Spiele- und Multimedia-Programmierung 4
D Textfield im Game ,Problem: while-Schleife Spiele- und Multimedia-Programmierung 3
S Ping Pong: KeyListener in Paint und while Spiele- und Multimedia-Programmierung 10
Developer_X Java3D und while schleifen Spiele- und Multimedia-Programmierung 4
D JFrames in For Schleife öffnen lassen Spiele- und Multimedia-Programmierung 2
K Quiz mit Schleife Spiele- und Multimedia-Programmierung 11
P Fehlermeldung bei If-Schleife Spiele- und Multimedia-Programmierung 4
J LWJGL Update Schleife (Snake) Spiele- und Multimedia-Programmierung 6
F Schleife warten lassen Spiele- und Multimedia-Programmierung 8
H Kreis zeichnen mittels Schleife & drawLine Spiele- und Multimedia-Programmierung 4
G Warten auf Button-Aktion in Schleife? Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen

Neue Themen


Oben