Hangman
-
also ich habe ein funktionierendes Hangman programm erstellt.
allerdings möchte ich eine .txt datei dazu erstellen, auf die das programm zugreift
um sich die strings zum erraten zu holen.
wie geht das ?
-
-
auf welche stelle aus dem eintrag soll ich mich jetz beziehn ?
-
Auf den kompletten

(Alternativ kann ich dir noch die Erläuterungen im Magazin anbieten)
-
Hi!
Is doch recht simpel. Zuerst brauchst du einen Stream um aus der Datei zu lesen:
std::ifstream in( "test.txt" );Dann benötigst du eine Liste für deine Fragen:
std::vector< std::string > frageListe;Nach eingehender Prüfung ob die Datei wirklich geöffnet werden konnte fängst du mit dem auslesen an, z.B. so:
char buffer[ 255 ]; while ( in.getline( buffer, 255 ) ) { frageListe.push_back( buffer ); }Nun brauchst du nurnoch eine Funktion die dir zufällig Fragen aus der Liste holt und gut is...
Achja, den Stream am Ende wieder schließen! [...]grüße
-
@David: Wenn du jetzt noch statt des char[] einen std:string verwendest, ist der Ansatz perfekt

-
Wie du wünschst!

std::string buffer; while ( getline( in, buffer ) ) { frageListe.push_back( buffer ); }
-
also ich habs jetz so gemacht :
string h; ifstream f("Datei.txt"); if(f) { getline(f,h); f.close(); }dann leg ich nur noch die "Datei.txt" an und fertig.
allerdings weiß ich jetz nich wie ich mir zufällig einen string aus der .txt datei nehme, da immer nur die erste Zeile gelesen wird.
-
Weil du den Stream nach dem Einlesen der ersten Zeile wieder schließt

getline() liest eine Zeile. Also musst du in einer Schleife so lange Zeilen auslesen, bis deine Datei zu Ende ist. Und erst dann f.close() aufrufen.
-
und wie mache ich der schleife klar wieviele strings meine datei hat ?
-
Wer lesen kann ist klar im Vorteil...

-
Nimm doch die Schleife von David, die liest so lange weiter, bis die Datei zu Ende ist. (ein Vorteil von STL-Containern ist, daß sie mitwachsen können ;))
Anschließend kannst du per rand() (o.ä.) einen Index aus deinem Array auswählen und als Ratewort verwenden.
-
so ich hab jetzt eine funktion die die zeilen alle einliest und mir dann einen zufälligen string übergibt.
jetzt bleibt noch die frage:
wie zähle ich die zeilen in der .txt datei ?
dann brauche ich nämlich nicht immer die zahlen umzuändern, sondern nur die strings in der .txt datei .
geht das überhaupt ?
-
Wie meinst du das?
Wenn du die Datei zeilenweise einliest, kannst du ja einen Counter mitzählen lassen. Dann hast du die Anzahl der Zeilen.
-
Bonzy schrieb:
so ich hab jetzt eine funktion die die zeilen alle einliest und mir dann einen zufälligen string übergibt.
jetzt bleibt noch die frage:
wie zähle ich die zeilen in der .txt datei ?
dann brauche ich nämlich nicht immer die zahlen umzuändern, sondern nur die strings in der .txt datei .
Am besten liest du die komplette Datei GENAU EINMAL ein und speicherst alle Werte in einem vector<> (siehe oben), dann kannst du über "frageListe.size()" die Anzahl der Suchworte und über "frageListe[i]" das i-te Wort deiner Liste erreichen.