Frage von eskey, 72

Wie kann ich in Java zwei Klassen miteinander Synchronisieren?

Habe in Java mit Eclipse ein Brettspiel Dame entwickelt. Ich habe das Brett vor mir und kann die Spielfiguren bewegen. Nun will ich auf meinem Bildschirm zweimal das selbe Brett anzeigen ( Das eine Brett soll der eine Spieler sein und das andere Brett der andere Spieler. Klingt zwar unlogisch, da keine 2 Personen an einem Computer spielen, jedoch soll das halt so sein) und wenn ich auf einem Brett einen Spielzug mache, soll dieser Spielzug auf dem anderen Brett angezeigt werden (Nur das Ergebnis des Zuges). Ist das möglich?

Kann mir da bitte jemand helfen?

Antwort
von mathpatGT, 51

Du brauchst zwei Threads. Dazu empfehle ich einen Blick in die Thread API. Wichtig ist die Synchronisation, damit die Threads sich nicht in die Quere kommen. Empfehlen würde ich Dir die Synchronisation auf ein statisches Objekt empfehlen (also einfach eine statische Konstante schreiben und darauf synchronisieren). Oder Du schreibst eine Methode der Form "private synchronized + TYP + methodenname()".

Genaues könnte ich aber nur mit dem Source-Code sagen, da ich Deine Implementierung nicht kenne.

Antwort
von MaxDoc, 44

Du kannst das sicherlich mit graphischen Anwendungen so machen,
dass die Fenster mit einander kommunizieren.
Ich selbst entwickele nicht mit Java und Eclipse als IDE,
aber so ist meine Lohik.

Antwort
von ceevee, 30

http://www.philipphauer.de/study/se/design-pattern/observer.php

Ohne den genauen Code zu kennen, kann man natürlich nur raten, aber das sieht so aus, als wenn du das mit dem Observer-Muster lösen könntest. Du hast quasi die zwei Spielbrett-Objekte (welche die Observer sind) und wenn auf einem Brett ein Zug getätigt wird, dann muss die Subject-Klasse reagieren und auf dem jeweils anderen Brett den entgegengesetzten Zug machen.

Antwort
von cryfor, 35

Du kannst versuchen in beide Klassen eine Funktion einzubauen, welche so zu sagen einen Zug macht und jeweils ausgeführt wird! (Verständlich? 😁)

Keine passende Antwort gefunden?

Fragen Sie die Community