Textdateien Highscore



  • Hallo!

    Wie Programmiere ich eine Highscore-Liste und schreibe sie in Textdateien?
    Wie wird diese Liste dann sortiert und wieder eingelesen?
    Oder gibt es dafür vielleicht fertige Klassen?

    Kann mir jemand helfen?

    Gruß

    Jens



  • Nimm ne map<highScore, name>, die sortiert automatisch, oder du schreibst z.B. ne Klasse die so aussieht und fügst sie in ein set (oder ne liste, und die dann sortieren) ein:

    #include <string>
    
    class HighScoreEntry {
      std::string name;
      int highScore;
    
    public:
      HighScoreEntry(const std::string &pname, int hs) : name(pname), highScore(h) {}
    
      bool operator<(const HighScoreEntry &rhs) {
        return (highScore<rhs.highScore) ? true : false;
      };
    
      bool operator>(const HighScoreEntry &rhs) {
        return (highScore>rhs.highScore) ? true : false;
      };
    };
    

    Die getter, setter und Konstruktoren darfst du noch selber bauen.

    Schreiben/Lesen tut man mit fstreams, schau in einem Tutorial oder such über Google.
    Informationen zu sets usw. findest du auf www.cppreference.com



  • Hallo

    Ich habe es mit einer Liste gemacht. Ich habe eine Klasse geschrieben mit folgenden Funktionen:

    CHighScore(void);
    	~CHighScore(void);
    	void Init(const std::string& p_rstrFileName, const int p_iSizeOfHighScore); //erzeugt eine Highscore mit übergebene Namen und in der übergebenen Größe
    	std::pair<std::string,int> GetPosition(const int p_iPostionInHighScore); //gibt Paar zurück, welches an der übergebene Stelle liegt (von 1 bis ...)
    	bool IsInHighScore(const int p_iPoints); //prüft, ob die Punkte für HighScore reichen
    	bool IsInHighScore(const std::pair<std::string, int>& p_rPairToCheck); //prüft, ob Paar in Highscore liegt
    	void UpdateHighScore(const std::pair<std::string, int>& p_rPairForUpdate); //Fügt übergebenes Paar in HighScore ein
    	int GetPositionInHighScore(const int p_iPoints); //gibt die Position zurück, an welcher die übergebene Punktzahl in HighScore steht
    	int GetPositionInHighScore(const std::pair<std::string, int>& p_rPairToCheck); //gibt die Position zurück, an welcher das übergebene Paar in HighScore steht
    	void ClearHighScore(void); //füllt die Liste mit default-Werten und schreibt diese in Datei
    

    Das ist aber nur meine bescheidene Umsetzung. Ich hoffe, dass es dir als Ideengeber dient.

    chrische


Anmelden zum Antworten