Frage von gerlochi, 64

Wie programmiere ich ein Text-Adventure?

Hallo!

Der Titel ist nicht gerade aussagekräftig, dass weiß ich. Meine genaue Frage dazu ist: Wie programmiere ich die Räume und Richtungen?

Ich habe schon einmal ein Text-Adventure geschrieben, das war recht gut, jedoch war der Code nachher so unübersichtlich (auch wenn jeder Befehl eine eigene Datei hatte), dass ich das Projekt abbrechen musste.

Die Räume hatte ich mit 1000 If-Abfragen irgendwie bewältigt, da ich nicht mit den Befehlen "n", "w", "s" und "e" arbeiten wollte, sondern ganze Richtungen angeben wollte.

Wie schaffe ich es also, alle Räume und Positionen/Richtungen so übersichtlich und einfach wie möglich zu gestalten?

Danke, gerlochi.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von JupStrunk, 35

dir hier jetzt beizubringen, wie man ein Adventure programmiert würde wohl zu weit führen !!! :D

für die möglichen Richtungen in den Räumen gibt es unzählige Ansätze...

ich würde das mit einem 2-dimensionalen Array realisieren... ;)

die erste Dimension definiert den Raum, zu dem die Richtungen gehören...
und die zweite Dimension die Räume zu denen die jeweilige Richtung führt...
z.B.
Richtung[RaumNr][0] für Norden
Richtung[RaumNr][1] für Westen
Richtung[RaumNr][2] für Osten
Richtung[RaumNr][3] für Süden

Beispiel:
Raum Nr. 22 führt im Norden nach Raum 15, im Süden nach Raum 12, und die restichen Richtungen sind nicht zugänglich...
dann würde das, für diesen Raum, so aussehen:
Richtung[22][0] = 15;
Richtung[22][1] = -1;
Richtung[22][2] = -1;
Richtung[22][3] = 12;

so kannst Du für jeden Raum abfragen, ob und zu welchem Raum die einzelnen Richtungen führen !!! ;)

Kommentar von gerlochi ,

Erstmal danke, du hast natürlich recht, das wäre viel zu lang :D!

Das was du sagst scheind sehr einfach zu sein, aber kannst du mir ein Beispiel für so eine Abfrage geben? Wäre wirklich nett :D.

Kommentar von fuitak ,

Welche Programmiersprache benutzt du denn? :)

Kommentar von fuitak ,

Wenn du vom aktuellen Raum wissen möchtest, welcher Raum in einer Richtung angrenzt, könntest du es so machen:

gibRaumInRichtung(int richtung){

return alleRaeume[aktuellerRaum][richtung];

}

Kommentar von gerlochi ,

Danke! Kann ich mich bei weiteren Fragen hier nochmal bei dir melden?

Kommentar von gerlochi ,

C++, steht ja im Titel :)

Kommentar von gerlochi ,

Also danke danke noch einmal an euch beide! Ich habe zwar schon mit einem anderen System angefsngen, aber ich werde nun dies hier vorgeschlagene verwenden, da es am einfachsten umsetzbar ist!

Antwort
von PWolff, 13

Schau dir mal das uralte Spiel "Wumpus" ("Hunt the Wumpus") an und ein paar Implementierungen hiervon.

Da solltest du eine Idee bekommen, wie Räume und Bewegungen übersichtlich und handhabbar realisiert werden können.

Kommentar von gerlochi ,

Danke dir!

Antwort
von gfntom, 7

Es gab vom früher das C64 Magazin von Markt und Technik.

In einigen Sonderheften wurde auf die Programmierung von (Text)Adventures eingegangen. Der Code dort ist zwar in BASIC, die Kurse und die Konzepte sind jedoch einfach portierbar.

Ich würde zwar nicht alles genau so übernehmen, aber man erhält eine recht gute Grundlage zur Programmierung.

Hier die Links:
http://winz-it.de/download/file?cat=64er&name=64er_sonderheft_60
http://winz-it.de/download/file?cat=64er&name=64er_sonderheft_1985_02
http://winz-it.de/download/file?cat=64er&name=64er_sonderheft_1986_04

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten