Labyrinth über MazeGameServer visualisieren

Diskutiere Labyrinth über MazeGameServer visualisieren im Softwareentwicklung Bereich.
J

jono

Es wird empfohlen mit der Komponente GameStatusModel zu beginnen. Die Aufgabe der Klassen der Komponente GameStatusModel ist es, den vollständigen Spielstatus(Maze, baits, score, players) zu enthalten und andere Komponenten wie die MazeClientUI über Änderungen zu benachrichtigen. Wie gehe ich da jetzt vor, kann mir da jemand Hilfe beim Ansatz geben, wie ich anfangen kann.
Zuerst möchte ich jetzt ein UML für die Klassen der GameStatusModel-Komponente erstellen. Ich weiß, dass mehrere Klassen notwendig sind, aber warum ist das nicht mit einer Klasse zu händeln?
Attribute wären ja schonmal coffee,gem,...(In der exam-task.pdf). Aber wie weiter...? Wäre sehr dankbar für ein paar gute Hilfen !
1597668078024.png
 

Anhänge

L

LimDul

Warum nicht mit einer Klasse? Kannst du dann in einem Satz die Klasse vollständig beschreiben was ihre Verantwortung ist? Schau dir in der exam-task mal das Kapitel 6 an, was es alles an Informationen gibt. Diese kannst du nicht einer Klasse abbilden. Der Spieler z.B. wird irgendwo eine Position haben. Die Baits müssen gespeichert werden. Wie soll deine Klasse dann aussehen? Zig Listen zu den unterschiedlichen Daten mit einfachen Datentypen? Das ist nicht sinnvoll. Es ist meist sinnvoller lieber mehr als weniger Klassen zu haben. Du hast es schon selber geschrieben " (Maze, baits, score, players)". Da hast du schon einige Dinge identifiziert. Das werden mit Sicherheit alles eigene Klassen werden (außer vielleicht Score, was ggf. eine Eigenschaft des Spielers ist).
 
MoxxiManagarm

MoxxiManagarm

und andere Komponenten wie die MazeClientUI über Änderungen zu benachrichtigen. Wie gehe ich da jetzt vor, kann mir da jemand Hilfe beim Ansatz geben, wie ich anfangen kann.

Ich weiß, dass mehrere Klassen notwendig sind, aber warum ist das nicht mit einer Klasse zu händeln?
Du kannst viel in einer Klasse machen, aber bedenke, dass du den Überblick behalten willst, sowie andere, die deinen Code anschauen wollen. Daher sind sprechende Strukturen ein notwendiges Mittel.
 
J

jono

@MoxxiManagarm
Also zu mir meinte der Dozent:
"Das Observer-Pattern brauchen Sie nicht selbst implementieren, denn in JavaFX gibt es dafür schon ObservableValues."

Ja, okay, das wäre natürlich sinnvoll, ich werde jetzt mal das UML weiter erstellen und ich werde es dann mal hochladen.
 
J

jono

Ich habe jetzt mal etwas erstellt und ich gehe fast davon aus, dass das nicht vollständig ist. Nur fällt mir einfach nicht mehr ein. Was könnte noch hinzugefügt werden?
1597674825119.png
 
L

LimDul

- Grundsätzlich - operation1 bis 6 sind keine sinnvollen Bezeichnungen.
- Gleiches gilt für attribute8
- Wo speicherst du die Position der baits?
- Warum hat ein Bait (also eine Instanz der Klasse Baits) vier Attribute? Ein Bait besteht für dich also aus "Gem UND Coffee UND Food UND Trap)"? Ist das was du da modelliert hast, nicht eher der BaitType mit einem Score Wert (Typ: Java-Enum).
 
L

LimDul

Vielleicht als Tipp: Lös dich mal von UML und Attributen und Methoden.

Beschreibe erst mal in Natürlicher Sprache, was hast du für Objekte

Ein Spieler befindet sich an einer Position im Labyrinth und hat einen Punktewert.
Ein Labyrinth besteht aus Wegen und Mauern......
 
J

jono

Die Bezeichnungen "-operation1 bis 6 usw." sind vorgegeben von Astah , werden noch umbenannt oder gelöscht jenachdem ob sie benötigt werden.
Wie speichere ich denn eine Postition...?(evtl. muss dann pro bait ein zweidimensionales Array angelegt werden?)
Ja, das stimmt es ist schon eher der BaitType, aber wieso kann ich es denn nicht einfach so anlegen und brauche ein ENUM? In der BaitType-Klasses sind Attribute doch eigentlich auch nur eine Aufzählung...?

Guter Tipp mit der natürlichen Sprache, habe ich ehrlicherweise nicht dran gedacht.
 
J

jono

Ist ja in der Protokollsyntax festgelegt in exam-task.pdf , soll ich das dann einfach übernehmen? String ... = "-" für ein unbekanntes nicht zugängliches Feld.
 
VfL_Freak

VfL_Freak

Moin,
Bekomme ich keine Antwort mehr ^^
mal so nebenbei:
Du musst bedenken, dass wir, die Dir helfen, das zumeist neben der Arbeit, Schule etc. machen!
Zudem völlig unentgeltlich! Und die wenigsten sind 24 h pro Tag online, haben aber auch ein Privatleben 😮

Also bitte ggf. etwas mehr Geduld in bezug auf Antworten!

VG Klaus
 
J

jono

@mrBrown
zur Klasse Player:
Jeder Spieler befindet sich an einer Position und schaut in eine der 4 vorhanden Himmelsrichtungen. Jeder Spieler hat eine individuelle Punktzahl und am Anfang beträgt sie 0. Jeder hat eine eigene ID und eine nickname und eine bestimme Koordinate im Maze. Der Spieler muss die Baits einsammeln können (collect()) und dazu muss er sich bewegen können (move()). Außerdem muss ein Spieler sich mit dem Server verbinden können, das Spiel spielen und es auch wieder verlassen können.

Maze:
Ein Labyrinth hat eine Höhe und eine Breite. Es besitzt außerdem unbekannte, nicht zugängliche Felder, dann Wände und noch freie Wege.
Die verschiedenen Items befinden sich mit ihren Scores ebenfalls im Labyrinth.

@VfL_Freak
Ja, ich weiß, habe auch absolut Verständnis und Geduld, dachte vielleicht hat er nicht mehr daran gedacht oder so...

1597757577522.png
Das habe ich jetzt erstmal vorläufig dazu erstellt.
 
J

jono

1. Auch mit width und height?
Was fehlt ansonsten noch? Müsste ich nicht noch eine Methode zum Verlassen des Spiels hinzufügen in der Klasse Player?
 
Thema: 

Labyrinth über MazeGameServer visualisieren

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben