MrSyniXDriVe
Lt. Junior Grade
- Registriert
- Aug. 2013
- Beiträge
- 308
Hallo zusammen!
Mit eine Kollegen müssen wir fürs Studium was programmieren. Gleich vorweg, ich erwarte hier keinen Code den ich per Copy-Paste reinkopieren kann, sondern einfach ein paar Ansätze oder Lösungswege.
Wir müssen ein "Textadventure" erstellen. Das Bedeutet, es gibt eine Start.txt. In dieser Textdatei steht ein Titel, 2 Verweise auf andere .txt Dateien (Möglichkeit A und B) und die Geschichte.
Der Spieler soll sich nun für A oder B entscheiden. Je nach Entscheidung wird nun der Text der jeweiligen Auswahlmöglichkeit angezeigt (der wiederum in einer neuen .txt gespeichert ist).
Facts:
Die Inhalte ALLER .txt Dateien müssen bei Programmstart eingelesen werden, also nicht erst wenn die Auswahl getroffen wurde.
Es gibt eine unbekannte Anzahl an Textdateien, nur der Name der ersten Datei ist bekannt, da er mit Kommandozeilenparameter beim Programmstart übergeben wird.
Auch die Anzahl der Zeilenlängen von Titel etc ist unbekannt.
Daher muss mit dynamischen Speicher gearbeitet werden
Es dürfen nur die Standard-C-Libraries verwendet werden.
Das ich für das Beispiel einen Binärbaum brauchen werde ist mir klar:
Für die erste Datei haben wir mit fseek() und ftell() die größe der Datei festgestellt und anschließend einen buffer mit malloc auf diese größe angefordert.
Anschließend haben wir mit einer Schleife einfach Character für Character in den buffer eingelesen.
Vielleicht gibts da ja noch eine bessere Möglichkeit (ist aber nicht primäres ziel)
Wir stehen eigentlich vor einem ganz anderen Problem:
Wir haben keinen Plan wie wir die einzelnen Zeilen un den Struct einlesen sollen, geschweige denn, wie wird das als Binärbaum durchlaufen lassen bis alle Dateien eingelesen wurden, da ja für die erste Datei zwei weitere eingelesen werden müssen, anschließend für diese 2 Dateien wieder 4 weitere etc bis das Ende des Baumes erreicht wurde.
Hier noch ein Beispiel für so eine Textdatei:
Dies ist der Titel der Geschichte
Kapitel2_auswahlA.txt
kapitel2_auswahlB.txt
Dies ist der Text der Geschichte. Er kann über mehrere Zeilen gehen.
Bitte wähle eine Möglichkeit: A oder B?
Der User gibt dann A oder B als Imput ein und das Programm fährt fort, das sollte aber das kleinste Problem darstellen. Wenn die Möglichkeiten zu ende sind, steht bei den .txt Dateien nur ein "-\n" drinnen.
Ich hoffe ihr versteht das Problem und könnt weiterhelfen
.
Mit eine Kollegen müssen wir fürs Studium was programmieren. Gleich vorweg, ich erwarte hier keinen Code den ich per Copy-Paste reinkopieren kann, sondern einfach ein paar Ansätze oder Lösungswege.
Wir müssen ein "Textadventure" erstellen. Das Bedeutet, es gibt eine Start.txt. In dieser Textdatei steht ein Titel, 2 Verweise auf andere .txt Dateien (Möglichkeit A und B) und die Geschichte.
Der Spieler soll sich nun für A oder B entscheiden. Je nach Entscheidung wird nun der Text der jeweiligen Auswahlmöglichkeit angezeigt (der wiederum in einer neuen .txt gespeichert ist).
Facts:
Die Inhalte ALLER .txt Dateien müssen bei Programmstart eingelesen werden, also nicht erst wenn die Auswahl getroffen wurde.
Es gibt eine unbekannte Anzahl an Textdateien, nur der Name der ersten Datei ist bekannt, da er mit Kommandozeilenparameter beim Programmstart übergeben wird.
Auch die Anzahl der Zeilenlängen von Titel etc ist unbekannt.
Daher muss mit dynamischen Speicher gearbeitet werden
Es dürfen nur die Standard-C-Libraries verwendet werden.
Das ich für das Beispiel einen Binärbaum brauchen werde ist mir klar:
Code:
struct Baum
{
char *titel;
char *text;
struct Baum *option_A;
struct Baum *option_B;
}
Für die erste Datei haben wir mit fseek() und ftell() die größe der Datei festgestellt und anschließend einen buffer mit malloc auf diese größe angefordert.
Anschließend haben wir mit einer Schleife einfach Character für Character in den buffer eingelesen.
Vielleicht gibts da ja noch eine bessere Möglichkeit (ist aber nicht primäres ziel)
Wir stehen eigentlich vor einem ganz anderen Problem:
Wir haben keinen Plan wie wir die einzelnen Zeilen un den Struct einlesen sollen, geschweige denn, wie wird das als Binärbaum durchlaufen lassen bis alle Dateien eingelesen wurden, da ja für die erste Datei zwei weitere eingelesen werden müssen, anschließend für diese 2 Dateien wieder 4 weitere etc bis das Ende des Baumes erreicht wurde.
Hier noch ein Beispiel für so eine Textdatei:
Dies ist der Titel der Geschichte
Kapitel2_auswahlA.txt
kapitel2_auswahlB.txt
Dies ist der Text der Geschichte. Er kann über mehrere Zeilen gehen.
Bitte wähle eine Möglichkeit: A oder B?
Der User gibt dann A oder B als Imput ein und das Programm fährt fort, das sollte aber das kleinste Problem darstellen. Wenn die Möglichkeiten zu ende sind, steht bei den .txt Dateien nur ein "-\n" drinnen.
Ich hoffe ihr versteht das Problem und könnt weiterhelfen