Klassen Umsetzungsfrage zu Spiel "Zuul"

Ion

Mitglied
Hallo,

ich würde gerne, einfach aus Spaß mal das Spiel "Zuul" programmieren.
Es handelt sich dabei um raumbasiertes Textspiel, sprich vom Prinzip her eigentlich nur Konsolenorientiert. Ich wollte dabei noch ein paar Kleinigkeiten wie verschlossene Räume, Gegenstände(Items) hinzufügen.

Ich bin zwar kein blutiger Anfänger mehr in Sachen Programmierung aber mit der OOP komme ich leider immer noch nicht ganz klar. Wann brauche ich wirklich eine Klasse und wann nicht?

Nun zum konkreten Problem:
Ich habe bei mir an die folgenden Klasse gedacht:
Spiel: Initialisiert das Spiel. Erstellt die Räume, Items etc.
Spieler: Stellt den Spieler mit seinen Informationen dar: Name, wo er sich befindet etc.
Eingabe: Liest die Eingaben und vielleicht noch Hilfe etc.
Raum: Informationen zum aktuellen Raum, Nachbarräume, Items usw.
Item: Informationen zum Item.

Ja, dabei stellen sich mir aber folgende Fragen:

Brauche ich, wenn ich auch verschlossene Räume haben will eine Klasse Tür oder kann man das zum Raum hinzufügen, wobei es ja auch nicht verschlossene Räume geben soll oder vielleicht Türen, die man mit einer Axt zerschlagen kann.

Jetzt habe ich ja die Klasse Item aber wie kann ich dann mehrere Items verwalten, beispielsweise soll der Spieler ja vielleicht eine Schlüssel für einen Raum haben. Ich habe dann gedacht, das man vielleicht eine Hashmap in der Klasse Spieler erstellt oder brauche ich dann noch eine Klasse Items?

Es soll ja auch Befehle geben. Man soll ja in den nächstem Raum gehen können durch eine Eingabe wie: Tür links oder so, brauche ich dann eine Klasse Befehle oder gehört das in die Klasse Spiel?

Reicht das so von der Klassenaufteilung her oder bräuchte ich noch zusätzliche Klassen und wenn ja, warum?

Ich habe auch mal nach einer Lösung gesucht und da das hier gefunden, allerdings ohne meine Ideen, wie eine Tür oder Items.

https://github.com/hrichter/zuul/tr...system/src/de/uni_hamburg/informatik/sep/zuul
Auch wenn ich jetzt nicht unbedingt auf die Lösung dort konzentrieren will verstehe ich nicht, warum er / sie eine Klasse Befehl und eine Klasse Befehlswoerter hat. Würde da nicht nur eine Klasse Befehl reichen?

Danke schon einmal im voraus an alle Antwortenden.
 
Zuletzt bearbeitet:

Saheeda

Top Contributor
Hallo Ion,

viele deiner Fragen lassen sich mit "kommt aufs Konzept an" beantworten.

Deine Idee sieht aber schonmal gut aus.

Ich würde nur keine eigene Klasse "Eingabe" bauen, meines Erachtens ließe sich das auch in der Klasse Spiel realisieren, sofern die Eingaben nur aus "links", "rechts", "ja", "nein" bestehen. (als Methode gamehandling o.ä.). Wenn da allerdings noch ein Parser hinzukommt, lohnt sich wiederum eine eigene Klasse.

Wenn die Tür nur die beiden Eigenschaften "offen" und "zu" hat, würde ein boolscher Wert ausreichen, bei so Besonderheiten wie mit der Axt würde es sich hingegen anbieten, eine abstrakte Klasse Tür zu bauen und davon z.B. OrdinaryDoor und SmashableDoor oder so abzuleiten.

Du kannst mehrere Items in einer Liste, Hashmap, Array oder dergleichen verwalten. Eine eigene Items-Klasse ist nicht notwendig.

Bei den Befehlen würde ich wieder schauen, wie umfangreich die werden sollen. Wenn in einem Befehl nur die Info "links" steht, wäre mir die Objekterzeugung im Vergleich zur Verwaltung eines simplen Strings zu doof.

Die Klasse Befehlswoerter aus deinem Beispiel halte ich für keine gute Idee. Er/sie benutzt diese Klasse, um eingegebene Befehle zu validieren. Dazu würde sich beispielsweise ein Enum "Befehl" eher anbieten.

Java:
enum Befehl{
	Geradeaus,
	Links,
	Rechts	
}

class KonkreterBefehl{
	Befehl befehl;
	
	public KonkreterBefehl(){
		this.befehl = Befehl.Geradeaus;
	}	
}
 
Zuletzt bearbeitet:

Ion

Mitglied
Das mit dem kommt auf's Konzept an dachte ich mir schon, Mmm ...

Das mit den Befehlen kann ja auch noch beliebig steigen, je nachdem was ich da noch hinzufüge aber bis jetzt würde es nur die Befehle gehe: rechts, links, oben und unten geben und item: xyz nehmen, fallen lassen und vielleicht noch ne Auflistung der Befehle.
Bei einem Parser handelt es sich doch um eine Klasse, die die Eingaben verwaltet und wenn nötig auch ändert oder? Also ungültige Zeichen etc. entfernen usw? Ich denke nicht, das ich sowas einbauen werde. Wenn eine ungültige Eingabe dabei ist kann man diese ja auch einfach ignorieren, ansonsten wäre das ja sowas wie meine gedachte Klasse Eingabe?

Zu der Tür:
Ja, das dachte ich mir ja auch, also das man dann bei der Klasse Raum halt noch eine boolesche Variable verschlossen hinzufügt aber wenn es mehr als ein paar Attribute / Variablen werden, dann bräuchte ich eine Klasse, richtig?
Ein Raum muss ja auch nicht unbedingt eine Tür haben.

Zu den Items:
Das würde dann aber zu dem Spieler gehören oder? Also eine Hashmap items zu der Klasse Spieler hinzufügen?

Zu den Befehlen:
Wäre das dann nicht eher was für den Parser? Hörte sich für mich eigentlich auch eher unnötig an.
 
Zuletzt bearbeitet:

Saheeda

Top Contributor
Jein. Ein Parser macht ein bisschen mehr. Wenn du z.B. eine Eingabe hast "Benutze Schlüssel mit Tür", liegt die erstmal als ein großer String vor.
Ein Parser zerlegt ihn dir in seine Bestandteile (und löscht je nach Implementierung auch gleich Sonderzeichen etc. mit raus), sodass du am Ende die Begriffe "Tür" und "Schlüssel" rausfiltern kannst und weißt, was der User eigentlich vorhat.
Sowas zu bauen ist nicht allzu schwer und eine gute Übung. "Kompliziertere" Parser arbeiten dann auch mit Regulären Ausdrücken (Regex).


Zur Tür:
Jap.
Aber überlege dir, wie du eine nicht vorhandene Tür implementierst. Eine Klasse DoorlessRoom? Eine private Variable Door, die bei türlosen Räumen gleich null gesetzt wird?
Bei ersterem brauchst du denke ich eine instanceof-Abfrage in einer enterRoom()-Methode, bei zweiterem musst du z.B. in einer openDoor()-Methode eine null-Prüfung einbauen.

Zu den Items:
Jap.

Zu den Befehlen:
Jap.
Sowas kann im Parser mit eingebaut werden.
Ob dus brauchst oder nicht, musst du selbst entscheiden.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Umsetzungsfrage: Personen mit mehreren "Rollen" Java Basics - Anfänger-Themen 9
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
I Threads Spiel gol Java Basics - Anfänger-Themen 6
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
H Spiel Kniffel: Gesamtes Array untersuchen. Java Basics - Anfänger-Themen 15
Tacofan Hangman als fertiges Spiel Java Basics - Anfänger-Themen 7
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
W Tic Tac Toe Spiel ohne Arrays Java Basics - Anfänger-Themen 7
S Im objektorientiertem "Spiel" kämpfen Java Basics - Anfänger-Themen 3
F Mastermind Spiel Java Basics - Anfänger-Themen 9
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Java Spiel Zufallsauswahl für Zugbeginn Java Basics - Anfänger-Themen 3
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
L Erste Schritte Spiel: Glückliches Sieben Java Basics - Anfänger-Themen 3
T Hangman spiel Java Basics - Anfänger-Themen 5
J 2 Pc's - Spiel gegeneinander ?! Java Basics - Anfänger-Themen 3
V Spiel Programmieren Java Basics - Anfänger-Themen 9
P 2D-Spiel und Bildschirmgröße Java Basics - Anfänger-Themen 2
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
T Blöcke für ein Jump and Run Spiel Java Basics - Anfänger-Themen 8
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
S 2D-Spiel im Vollbild an größe anpassen? Java Basics - Anfänger-Themen 3
M hangman spiel Java Basics - Anfänger-Themen 1
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
S Mosaik Spiel Java Basics - Anfänger-Themen 19
pinar memory spiel Java Basics - Anfänger-Themen 10
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
K Erste Schritte Wie mache ich weiter? (Spiel-Menü) Java Basics - Anfänger-Themen 9
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
J Variablen Invalid Character - Error -> Spiel mit Variablenergebnissen Java Basics - Anfänger-Themen 8
K Schere Stein Papier Spiel Java Basics - Anfänger-Themen 3
A Feedback zum Spiel Java Basics - Anfänger-Themen 5
F Hilfe bei meinem Spiel Java Basics - Anfänger-Themen 3
C Lotto Spiel Java Basics - Anfänger-Themen 23
Jagson Dotcom Spiel - Dots Random setzen Java Basics - Anfänger-Themen 8
Dogge Farben-Spiel Java Basics - Anfänger-Themen 20
K Diverse Bugs in einem Snake Spiel Java Basics - Anfänger-Themen 4
2 Lotto-Spiel Java Basics - Anfänger-Themen 9
X Datentypen Probleme mit Char bei meinem 1. Spiel Java Basics - Anfänger-Themen 20
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
P NullPointerException in Memory-Spiel Java Basics - Anfänger-Themen 5
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
K Hilfe, komme nicht weiter in meinem JAVA-Spiel Java Basics - Anfänger-Themen 3
J Programm(Spiel) neustarten Java Basics - Anfänger-Themen 8
M Suche Beispiel-Spiel Java Basics - Anfänger-Themen 3
C Java Nullpointer Exception in 2D-Spiel Snake Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben