also ich programmiere gerade ein kleines Textadventure in C++, aber habe ein Problem.
Undzwar gibt man am Anfang den Namen ein und was man machen will!
Nur irgendwie funzt das mit if(todo=="raum1") nicht. Ich will abfragen was man eingibt. Wenn man zb raum1 eingibt soll da stehen "du bist in raum1". Aber es klappt nicht.
Hier mal die Fehler die DevC++ anzeigt.
Ich habe auch gestern im IRC Channel "progforum" nach gefragt, aber irgendwie war wohl jeder away^^ kA!
Ist eigentlich recht eindeutig. Eine Variable ist ein Pointer, die andere nicht.
Außerdem solltest du beide als vom selben Typ deklarieren, wenn du eine Ganzzahl mit einem String vergleichst, wird da nicht viel draus
Das Problem bei C ist es, dass es keine echten Strings gibt, sondern nur Char-Arrays/Pointer auf diese. (Wenn man nicht basic_string benutzt)
Deswegen kann man nicht einfach zwei char*/[]s mit == vergleichen. Dafür brauch man die Funktion strcmp() aus string.h
Die Funktion liefert 0 (entspricht false oder auch !) zurück wenn die Strings gleich sind.Da fällt mir noch was ein.
Am Ende des Strings ist wahrscheinlich noch ein Zeilenumbruch \n. Versuch mal !strcmp(todo,"raum1\n").
Übrigens.. wenn man eh C++ benutzt kann man auch folgendes machen:
Aber irgendwie stimmts schon, normalerweise drückt man da nur 1 - 4 (je nach Menge der Wahlmöglichkeiten) für die verschiedenen Auswahlmöglichkeiten und der Text erklärt was dann passiert. Aber man kann die Methode oben ja dennoch für einige Passagen verwenden. Wenn es um explizite Anweisungen geht die nicht extra aufgeführt sind oder eigene Konsolenbefehle zum Beenden des Spiels oder so.
Komisch ...
Kpayne hat doch in seinem ersten Post geschrieben, dass es ein Textadventure werden soll. Und er will den Benutzer damit wohl wählen lassen, was er machen will. Und wenn der Benutzer z.B. raum1 eingibt, soll da eben der Text des raum1 stehen. Man braucht wirklich nicht viel Erfahrung, um das dem Quellcode entnehmen zu können.
Und wieso willst du das interpretieren? Das Thema ist abgeschlossen, und C++ muss man gar nicht interpretieren ...
edit: Das war heute das dritte Mal, dass jemand schneller war.
Aber irgendwie stimmts schon, normalerweise drückt man da nur 1 - 4 (je nach Menge der Wahlmöglichkeiten) für die verschiedenen Auswahlmöglichkeiten und der Text erklärt was dann passiert. Aber man kann die Methode oben ja dennoch für einige Passagen verwenden. Wenn es um explizite Anweisungen geht die nicht extra aufgeführt sind oder eigene Konsolenbefehle zum Beenden des Spiels oder so.
...
Zumindest bei den normalen hausgemachten Textadventures (wie ich zugeben muß auch in dem, mit dem ich mich in Ruby einarbeite). Die richtig guten Textadventures haben natürlich Steuerung über Texteingabe, mit unglaublich leistungsfähigen Parsern:
Zitat von Adventure
[BTW, ich zitiere hier aus dem Spiel "Adventure", genauer gesagt aus der 550 Punkte-Version für MacOS 9.]
[Ein Zwerg will mich gerade umbringen und ich wehre mich]
> use axe with dwarf
Huh??
> kill dwarf with axe
With your bare hands?
> NO
> axe dwarf
What do you want to do with the axe?
> attack dwarf with axe
Huh??
> equip axe
Huh??
> wield axe
Huh??
> throw axe at dwarf
You have just killed a dwarf. [...]
...
Okay, es ist wohl keine gut Idee, bei einem selbstgebauten Adventure einen Parser zu verwenden - entweder codet man sich tot oder der User muß wie bei Adventure immer exakt die richtige Zeile eingeben, oder er kommt nicht weiter.
Man könnt ja Untermenüs machen und ne Art Dos-Steuerung...^^
So etwa:
Und dann wechselt man mit "cd <name>" den Ordner und dort befinden sich die Aktionen drinne... Dann kann man auch noch viel Inhalt reinbringen und mit "dir/p" den Inhalt Bildschirmweise durchgehen. Macht aber sicher auch recht viel Arbeit, muss also nicht sein.
Das bringt mich auf die Idee, mal ein eigenes DOS zu programmieren. Mal sehen was sich da so machen lässt...