Highscoreliste



  • Also , ich hab ein kleines großes Problem
    ich muss ein Kniffelspiel programmieren und will die Highscoretabelle in einer datei speichern.
    der speicheraufbau in der datei soll punkte NEUE ZEILE name NEUE ZEILE datum sein.
    nun hab ich was zum überprüfen ob neue highscore erreicht wurde geschrieben. Hier der Quelltext:

    int a=9;
            int b=10;
            for(int i=1; i<=Optionen.anzahl; i++)
            {
                if (total[i]<=Highscore.pkt[10])  { }
                else {
                    while(total[i]>Highscore.pkt[a] && a>0) {
                        a--; }
    
                    while(b>(a+1)) {
                        Highscore.pkt[b]=Highscore.pkt[b-1];
                        Highscore.name[b]=Highscore.name[b-1];
                        Highscore.datum[b]=Highscore.datum[b-1];
                        b--; 
                    }
                    Highscore.pkt[a+1]=total[i];
                    switch(i) {
                        case 1 : Highscore.name[a+1].Format("%s",Optionen.m_name1); break;
                        case 2 : Highscore.name[a+1].Format("%s",Optionen.m_name2); break;
                        case 3 : Highscore.name[a+1].Format("%s",Optionen.m_name3); break;
                        case 4 : Highscore.name[a+1].Format("%s",Optionen.m_name4); break;
                        //Highscore.datum[a+1]=DATUM;
                    }
                }
            }
            CString str_temp;
            CFile datei( "high.scr", CFile::modeCreate | CFile::modeWrite ); 
            for (i=1; i<=10; i++)
            {
                str_temp.Format("\n%i\n%s\ndd.mm.yyyy\n",Highscore.pkt[i], Highscore.name[i] );
                datei.Write( str_temp, sizeof( str_temp ) ); 
            }
            datei.Close();
    

    Dabei wird von dem 10. Eintrag überprüft ( Die Werte werden in Highscore.pkt[...] etc gespeicht) in welche Zeile eingetragen werden soll. Und dann werden die Zeilen die darunter liegen eine Zeile nach unten verschoben.

    Doch wenn ich spiele und die highscoredatei geschrieben wird, steht nur folgendes drin:

    318
    0
    n
    0
    n
    0
    n
    0
    n
    0
    n
    0
    n
    0
    n
    0
    n
    0
    n

    was hab ich falsch gemacht, ich seh den fehler absolut nicht

    thx im voraus



  • Also ich nehme mal an, dass du die Zahlen in deinem Array richtig sortiert hast. Dann probiers mal mit CFileStdio anstadt CFile, und dann mit der Methode WriteString.



  • Oh, sorry hab ich mich vertan.



  • eigentlich heisst des eher CStdioFile()



  • danke, hab jetzt eine funktionierende highscore. hab auch noch paar andere fehler entdeckt 🙂


Anmelden zum Antworten