![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Neuer Benutzer Registriert seit: 02.01.2006
Beiträge: 13
|
Hallo, zunächst mal sorry für den bescheuerten Titel, leider ist mir kein passenderer eingefallen. Es geht um folgendes: Fürs Studium soll eine Java Applikation für das Spiel 4 gewinnt geschrieben werden. Es soll Mensch gegen Mensch, PC gegen PC und Mensch gegen PC spielbar sein. Soweit kein Problem. Diese Applikation soll jedoch über mind. 2 versch. Benutzerschnittstellen spielbar sein: Einmal rein textuell über Kommandozeile aber auf Wunsch auch über mehrere verschiedene Swing Oberflächen. Ich habe zwar gute Java allgemein Kenntnisse habe aber leider noch nicht viel, bzw gar nicht mit grafischen Oberflächen in größeren Projekten gearbeitet. Hier fehlt mir vor allem Wissen über Kommunikation von der Oberfläche mit der Logik. Viele Mitstudenten haben das Problem bereits gelöst bei ihnen ist jedoch immer die Benutzeroberfläche das Herzstück und übernimmt sämtliche Aufgaben. Daraus resultiert dass sie mit jeder Einführung einer neuen Oberfläche auch ein Großteil der Logik nochmals implementieren. Diese Implementation könnte ich wohl auch umsetzen, jedoch halte ich sie für sehr unsauber und problematisch. Die zentrale Frage die sich stellt ist: Wie trenne bzw verberge ich die gesamte Programmlogik hinter den Benutzeroberlächen-Klassen? Prinzipiell habe ich mir den Aufbau in etwa so vorgestellt: Es existiert ein Controller-Klasse (sie und nicht die grafische Oberfläche ist das Herz der Anwendung). Sie initialisiert eine Oberflächenklasse (eine der Swing-Klassen oder die Text-Klasse), weist sie an und nimmt Benutzereingaben entgegen. Die Benutzerschnittstellen-Klassen implementieren alle das gleiche Interface, sodass jede Oberfläche stellvertretend für das Interface im Controller verwendet werden kann. Leider habe ich keinen blaßen Schimmer wie ich Eingaben aus einer grafischen Oberfläche an den Controller zurückgebe. Ich kann in der Oberflächenklasse ja kaum mit return arbeiten oder? Wenn ein Stein in ein Feld gesetzt wird soll das grafische Fenster ja auch nicht geschlossen sondern lediglich blockiert werden bis die Logik den Spielzug ausgeführt hat. Threads sollten nach Möglichkeit nicht verwendet werden, sind aber auch nicht ausdrücklich verboten. Ich wäre sehr dankbar wenn mir jemand einen Link zu einem Projekt oder Links zu Materialien schicken könnte, damit ich mir ansehen kann wie soetwas sauber umgesetzt werden kann. Tausend Dank für eure Hilfe Gruß Christian Geändert von Cojote (02.01.2006 um 16:44 Uhr) |
| | |
| | Nach oben #2 | |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Hmmm, was meinst du denn hiermit: Zitat:
Letztlich ist es ja dann egal, wo die Informationen herkommen. Hauptsache sie gelangen in den Controller, der diese dann weiterverarbeitet. Kurz: Ich hab nicht so ganz verstanden, wo dein Problem liegt *g* Grüße Ben. | |
| | |
| | Nach oben #3 |
| Neuer Benutzer Registriert seit: 02.01.2006
Beiträge: 13
|
Vielen Dank für die schnelle Antwort. Da hast du natürlich recht. Ich mach mal ein kleines Beispiel zum starten des Spiels. Zunächst rufe ich im Controller die Methode showStartScreen() der Benutzeroberfläche auf. Dadurch kommt nun die Oberflächen-Klasse zum Zug In dieser Methode initialisiert die Benutzeroberflächen-Klasse (hier eine Swing) nun ein grafisches Fenster mit allen notwendigen Angaben. Es existiert ein OK Knopf. Beim betätigen dieses Knopfs soll der Controller wieder zum Zug kommen und angewiesen werden die Daten aus der Benutzeroberflächen Klasse abzuholen. Der Controller validiert die Eingaben. Sind sie ok bekommt die Oberfläche den Befehl das Fenster zu schließen. Meine Frage ist nun: Wie erkennt der Controller dass etwas eingegeben wurde und kann genau an dem Punkt an dem er die Oberflächen-Klasse angewiesen hat wieder aufsetzen? Ich habe es zunächst mit einem Observer versucht aber da kann ich ja auch nicht direkt wieder an dem Punkt aufsetzen. Das mit dem return habe ich geschrieben da ich befürchte dass so ja die Ausführung der Oberflächen-Klasse direkt abgebrochen wird und somit auch das Fenster sofort verschwindet. Ist das inkorrekt? Was ich möchte ist eine Art VC-Pattern wie ich es schon aus PHP kenne. Oder mal so gefragt: Ist es überhaupt möglich was ich vorhabe oder ist das Wolken-Kuckucksheim? |
| | |
| | Nach oben #4 | ||||
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
| Zitat:
Zitat:
Hab ich nicht verstanden Zitat:
Zitat:
Grüße Ben. | ||||
| | |
| | Nach oben #5 | |||
| Neuer Benutzer Registriert seit: 02.09.2004
Beiträge: 22
|
Hallo Cojote! Zitat:
Zitat:
Zitat:
Ich hoffe ich konnte ein wenig helfen. Gruss! Franz | |||
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Dynamische GUI | risa | Desktop-Applikationen und Grafik | 9 | 01.03.2006 13:06 |
| warten auf Threads und Aufbau GUI | desaster | Allgemeine Java-Programmierung | 7 | 07.09.2005 14:55 |
| GUI Programmierung | Java17 | Literatur | 1 | 28.02.2005 11:10 |
| GUI Programmierung | Java17 | Allgemeine Java-Programmierung | 11 | 17.02.2005 21:04 |
| XML Schema GUI Engine (JAXFront) | spor | Nachrichten | 2 | 05.08.2004 17:27 |