Highscore
-
Hallo
Da du mit dem BCB arbeitest, kannst du auch einfach mal in die entsprechende FAQ hier im Forum schauen, da ist in der TOP3 auch das Speichern in Dateien erläutert.
bis bald
akari
-
Also der Quelltext is mir echt zu hoch haste da irgendwelche speziellen header oder so includiert? Denn ich krieg immer folgende Fehler:
[C++ Fehler] Snake.cpp(15): E2316 'ostream' ist kein Element von 'std'.
[C++ Fehler] Snake.cpp(139): E2316 'ofstream' ist kein Element von 'std'.Ich weis überhaupt nicht was du da im Kopf der Unterprogramme geschrieben hast. Kannst du mir vielleicht sagen wie der Aufruf und der Prototyp aussehen. (Hab erst 3 Monate prog erfahrung und das ich nicht viel)
-
Die benötigten Header sind iostream, fstream, sstream, string und map (Glaube ich). Soll ich es erläutern?
-
ne ich denke die include Anweisung krieg ichgrad noch hin
-
Ich meinte den Code :p. Lies dir mal ein paar Sachen über Streams durch (vor allem Filestreams und Stringstreams), dann sollte das meiste klar werden. Die Map sorgt einfach dafür, dass die Daten sortiert nach Punkten in umgekehrter Reihenfolge (unsigned als Key und std::greater<unsigned> als Vergleichsfunktor) gespeichert werden.
-
Der Aufruf und der Prototyp sind mir leider immer noch total unklar wie schon gesagt ich bin noch anfänger und eine Header datei sieht für mich aus wie ne Chinesische Zeitung
-
Ich habe noch nie Propaganda in einem Header gesehen ;).
Wie gesagt, google mal nach Filestreams, die sind das wichtigste. Ein Aufruf könnte etwa so aussehen:// save: ofstream datei ("highscore"); saveHighscore (datei, "Sieger", 10000); // read (mit Ausgabe, das ist die letzte Schleife (kann auch entfernt werden, ist eigentlich sogar falsch :rolling_eyes: )): ifstream datei2 ("highscore"); showHighscore (cout, datei2);
-
Werd ich machen aber bis es so weit ist könntest du mir vielleicht den aufruf und prototyp davon sagen den bis ich das selbst raus hab gehen n paar Nächte drauf
void saveHighscore (std::ofstream &fs, std::string name, unsigned punkte) { fs << name << ' ' << punkte << std::endl; } void showHighscore (std::ostream& os, std::ifstream& is) { std::map<unsigned, std::string, std::greater<unsigned> > m; while (is) { std::string s; std::getline (s, is); ostringstream ss (s); std::string s2; ss >> s2; unsinged i; ss >> i; m.insert (std::make_pair (i, s2)); } for (std::map<unsigned, std::string>::const_iterator i = m.begin (), unsigned j = 1; i != m.end (); ++i, ++j) os << j << ". " << i.second << ' ' << i.first << std::endl; }
-
Aufruf steht im letzten Beitrag, der Prototyp sollte klar sein, wenn du weißt, was ein Prototyp ist.
-
Wobei das hier
showHighscore (cout, datei2);nur bei einem Konsolenprogramm funktioniert. Da du mit dem BCB arbeitest, wäre ein Blick in die Hilfe zu TStringList und AnsiString auch nicht verkehrt. Dann solltest du auch akaris Rat beherzigen. Fragen dazu würden aber dann in das BCB-Forum gehören.
-
Ich hab eh ne Konsolenanwendung ich werd jetzt mal n bissal büffeln und versuchen eine einfachere Lösung zu finden den eure ist zwar sehr gut aber was nützt mir eine Funktion wenn ich sie nicht verstehe. Also Danke trotzdem