Einen Dialog zweier Personen erstellen (Textadventure)

Sessiolog

Mitglied
Hallo Leute!

Ich habe heute morgen angefangen, ein kleines Textadventure zu programmieren. Ein Merkmal des Spiels soll es sein, dass jede Person in der Geschichte von einem kleinen JFrame repräsentiert wird. Zwischendurch soll es immer wieder vorkommen, dass sich zwei Personen (Also zwei JFrames) unterhalten. Dabei soll der gesprochene Text nur in dem Frame der sprechenden Person zu sehen sein. Die Ausführung im Groben:
Die "Drehbücher" der einzelnen Personen in .txt Dateien speichern. Von Reader einlesen lassen und in das JTextArea des bestimmten Frames drucken.

Man könnte es ja so einrichten, dass nur eine Zeile pro Tastendruck ausgegeben wird, ähnlich wie bei den Pokemon/Zelda spielen, aber ich würde gerne ein paar Passagen einbauen, in welchen sich die Dialoge von selbst abspielen. Das ließe sich mit Threads lösen, die zeitgesteuert Text einlesen/drucken nur leider stehe ich vollkommen auf den Schlauch, wenn es um die Programmierung geht. Kann mir da jemand auf die Sprünge helfen? Wie kann man zwei Threads kommunizieren lassen?
 

SilverClaw

Aktives Mitglied
Hallo, endlich mal eine gut formulierte Frage. :applaus:

Eher nebenbei, Thread können z.B. über PipedStreams kommunizieren: Galileo Computing :: Java ist auch eine Insel – 17.7 Kommunikation zwischen Threads mit Pipes *

Allerding würde ich dir ein paar andere Sachen ans Herz legen:
1. Willst du wirklich zwei verschiedene JFrames verwenden? Da empfiehlt sich doch lieber jeweils ein JPanel oder anderer Container innerhalb eines Frames.
2. Braucht es da zwei Threads? Das wird wahrscheinlich mehr Fehlerquellen bringen, als es nützlich ist.
Sag doch einfach deinem einen Thread, dass er je nachdem in das eine oder andere Dialogfeld schreiben soll. Mit dem Swing Timer lässt sich der Ablauf auch gut steuern. Zusätzlich ein Mouse- oder Keyboardlistener ließe ich dann auch einfach einbauen.
 

eMmiE

Bekanntes Mitglied
Ich gehe mal davon aus, dass die Personen immer nacheinander und nicht gleichzeitig sprechen sollen, oder?
Also, das erst der eine fertig spricht, notfalls mit "..." endet und dann der andere weiterspricht.

Dann brauchst du das ganze nicht Threadbasiert zu machen, sondern event-basiert, d.h. die Geschichte der nächste Dialog wird erst gesprochen, wenn Enter gedrückt wurde, bzw. wird dann die nächste Methode aufgerufen.

In den Methoden kann dann aber auch stehen, dass nicht nur in einen, sondern in zwei Frames/Panels, was auch immer, geschrieben/gesprochen werden kann

Thread-basiert macht nur Sinn, wenn er immer wieder das selbe macht (Spielposition -> Rendern -> Malen), ohne extra auf events (keyPressed,...) warten zu müssen

Gruß eMmiE
 

Sessiolog

Mitglied
@SilverClaw: Von den PipedStreams habe ich nie etwas gehört. Liegt wohl daran, dass ich mich nie durch die JavaInsel gequält habe. Schande über mein Haupt! :D Ich werde mal gucken, ob und wie sich damit was anfangen lässt.

Und was die Sachen betrifft, die du mir ans Herz legen willst: Ja! Die Dialoge durch mehrere JFrames würde ich gerne drinnenlassen. Ich habe auch schon daran gedacht, an ein paar stellen so ca. 4 bis 6 JFrames reden zu lassen. Ob das nun auch umsetzbar sein wird, werde ich ja die nächsten Tage herausfinden.^^
Es ist aber tatsächlich ein bisschen sinnlos, zwei Threads für so etwas zu erstellen, wo doch einer reicht.

@eMmiE: Richtig, das ganze ließe sich auch mit einem "keyPressed"-Event lösen, aber wie bereits gesagt: Ich möchte einige Passagen einbauen in denen sich die Dialoge von selbst abspielen, ohne das dafür etwas getippt/geklickt werden muss. So eine Art Zwischensequenz wenn man es so nennen möchte.

Danke für eure Hilfe :)
 

kaoZ

Top Contributor
Dann würde ich den Dialogen / Events einfach einen Typ mit im Konstruktor übergeben :

0 = NORMAL;
1 = SEQUENCE;

so kannst du selber entscheiden ob ein Gespräch / Dialog startet welche s/r bestätigt werden muss oder selbstständig abläuft.

oder einfach mit Subtypen eines Dialoge arbeiten.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Minecraft Frage für einen Minecraft Server Spiele- und Multimedia-Programmierung 2
G Mikrophon-/Audiosteuerung für einen Character Spiele- und Multimedia-Programmierung 1
D Iterieren durch einen Ordner mit Audiodateien und verketten eine andere Audiodatei Spiele- und Multimedia-Programmierung 17
Blender3D VlCJ Windows 10 kein Zugriff auf einen im Netzwerk freigegebnen Ordner Spiele- und Multimedia-Programmierung 2
S Wie kann ich ein Bild in einen Frame einfügen? Spiele- und Multimedia-Programmierung 2
J mehrere Listener für einen Button / Label Spiele- und Multimedia-Programmierung 1
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
F Einen Sound mit veränderter Tonhöhe und Geschwindigkeit abspielen - Hilfe erbeten Spiele- und Multimedia-Programmierung 29
C Java3D Sound spielt nur einen Sound ab. Spiele- und Multimedia-Programmierung 8
M Einen Hobby Game - / Grafik Designer zu finden (Screenshot vom Spiel) Spiele- und Multimedia-Programmierung 7
F Wie mache ich einen Screenshot vom Display (LWJGL)? Spiele- und Multimedia-Programmierung 7
C Java3D Rotation um einen Punkt (y-achse) Spiele- und Multimedia-Programmierung 2
C JAVA3D Rotation um einen bestimmten Punkt Spiele- und Multimedia-Programmierung 20
Tapsi Anfänger braucht einen Rat ^^ --> Performance Spiele- und Multimedia-Programmierung 7
G Wie bekomme ich einen Punkt (Graphics) Spiele- und Multimedia-Programmierung 2
T Wie kann ich ein OrbitBehavior auf einen festen Wert setzen? Spiele- und Multimedia-Programmierung 2
K Wie malt man am geschicktesten einen Würfel? Spiele- und Multimedia-Programmierung 2
M Anfänger Problem mit einen MouseMotionListener Spiele- und Multimedia-Programmierung 2
G Einen gif oder jpg Datei aus einem Graphics Objekt o. JFrame Spiele- und Multimedia-Programmierung 2
I jPCT rendert nur einen schwarzen Bildschirm Spiele- und Multimedia-Programmierung 2
R Wie zeichne ich einen einzelnen Punkt Spiele- und Multimedia-Programmierung 2
A Fehlerton bei modalen Dialog Spiele- und Multimedia-Programmierung 9
L Dialog in RPG Spiele- und Multimedia-Programmierung 14
so_ein_Komischer Simple Kollisionskontrolle zweier jLabels Spiele- und Multimedia-Programmierung 5
Kr0e Kollision zweier Kugeln... Wo ist Newton ?? Spiele- und Multimedia-Programmierung 9
C dezentraler Stoß zweier Kugeln Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben