Spielstände Speichern/laden unter C



  • Juju schrieb:

    Übrigens ich programmiere erst seit 4 monaten.;)

    und dann schon ein schachspiel?
    hut ab 👍



  • "Normalerweise ist der Spielfortschritt ja in Variablen im Schachprogramm, die kann man Raw in eine Datei speichern und dann wieder lesen 😉 Einen Dialog dafür gibts sicher schon fertig, einfach mal googeln ;-)"

    Ich find da nichts!!! kannst du mir mal helfen???? 😞



  • Ich kann dir auch den quellcode schicken wenn du mir deine e-mail addresse gibst 🙄



  • Okay, dann schick mal an X11 ät gmx döt dääh



  • Also ich mein das jetzt ernst !!!



  • Dann zeig doch mal die Struktur in der Du den Aufbau des Schachbretts während des Spiels verwaltest und Deine bisherigen Ansätze zum Speichern und Laden. Zum Thema Datei-I/O in C gibt es im Netz sicher genug Tutorials, dass Du da zumindest Ansätze findest.



  • Das ist jetzt nur die funktion für Brett ausgabe:

    " //
    /******** Brett-Ausgabe*******/
    /
    /
    int Ausgabe()
    { system("cls"); /(löscht den bildschirm)/
    int i, j, spieler, figur, feldfarbe=0;

    printf("S C H A C H S P I E L - VERSION 1.0 Beta Build 102 © 2007 All rights reserved.25.01.07 \n\n\n\n");

    printf("\n a b c d e f g h\n"); /* Buchstaben Oben*/
    /* Rand oben und 2 schritte verschiebung*/
    printf(" %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n", 201, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 187);
    for(j=0;j<8;)
    {

    /* zeichnet die geraden zeilen 8,6,4,2*/
    printf(" %i%c", (8-j), 186); /*linker,-zahlen -rand für geraden zeilen*/
    for(i=0;i<8;i++)
    {
    spieler = SpielFeld[i][j].Spieler;
    figur = SpielFeld[i][j].Figur;
    if(feldfarbe == 1)
    {
    if (spieler == 1) /* Figurfarbe Schwarz*/
    SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY |BACKGROUND_RED | BACKGROUND_GREEN);
    else /* Feldfarbe oliv*/
    SetConsoleTextAttribute(hStdOut, BACKGROUND_RED | BACKGROUND_GREEN);
    feldfarbe = 0;
    }
    else
    {
    if (spieler == 1) /* Figurfarbe Weiss*/
    SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY |BACKGROUND_RED| BACKGROUND_BLUE| BACKGROUND_GREEN);
    else /* Feldfarbe Grau*/
    SetConsoleTextAttribute(hStdOut, BACKGROUND_RED| BACKGROUND_BLUE| BACKGROUND_GREEN);
    feldfarbe = 1;
    }
    printf("%s", SpielFigur[figur].Name);

    }
    j++;
    SetConsoleTextAttribute(hStdOut, wOldColAttr); /* Schwarze Farbe wieder herstellen */

    printf("%c%i\n", 186, (9-j)); /*rechter,- rand -zahlen für die geraden zeilen */

    feldfarbe = 1;

    /* zeichnet die ungeraden zeilen*/
    printf(" %i%c", (8-j), 186); /* Linker,-zahlen -rand für ungeraden zeilen*/
    for(i=0;i<8;i++)
    {
    spieler = SpielFeld[i][j].Spieler;
    figur = SpielFeld[i][j].Figur;
    if(feldfarbe == 1)
    {
    if (spieler == 1) /* Figurfarbe Schwarz*/
    SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY |BACKGROUND_RED | BACKGROUND_GREEN);
    else /* Feldfarbe oliv*/
    SetConsoleTextAttribute(hStdOut, BACKGROUND_RED | BACKGROUND_GREEN);
    feldfarbe = 0;
    }
    else
    {
    if (spieler == 1) /* Figurfarbe Weiss*/
    SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY |BACKGROUND_RED| BACKGROUND_BLUE| BACKGROUND_GREEN);
    else /* Feldfarbe Grau*/
    SetConsoleTextAttribute(hStdOut, BACKGROUND_RED| BACKGROUND_BLUE| BACKGROUND_GREEN);
    feldfarbe = 1;
    }
    printf("%s", SpielFigur[figur].Name);

    }
    j++;
    feldfarbe = 0;
    SetConsoleTextAttribute(hStdOut, wOldColAttr); /* Schwarze Farbe wieder herstellen*/

    printf("%c%i\n", 186, (9-j)); /*rechter,- rand - zahlen für die ungeraden zeilen*/
    }
    /*rand unten*/
    printf(" %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n", 200, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 188);
    printf(" a b c d e f g h\n"); /*Buchstaben unten*/
    /* Alte Text-Farbe wiederherstellen */
    SetConsoleTextAttribute(hStdOut, wOldColAttr);
    return 0;
    }
    /****************************Ende von Brett-Ausgabe****************************/

    "

    Ansätze für Speichern und laden hab ich keine . 😞 Ich muss soger noch ne Notation hinbekommen 😞 hab kein plan!



  • So ganz naiv würde ich die Spielstände in einem 2D-Array speichern.
    Den Spielfiguren kannst Du dann durch Werte im Array repräsentieren (z.B. 0 = leeres Feld, 1 = Bauer, 2 = Springer, 3 = Läufer, 4 = Turm, 5 = Dame, 6 = König)

    Das ganze Array kannst Du mit fprintf in eine Datei schreiben (pro Eintrag eine Zeile).
    Zum laden mit fgets auslesen und mit atoi umwandeln und in dein Array schreiben.



  • Jo danke das mit array und 1 für bauer hatte ich schon danke für dein tipp ich wusste nur nicht das es fprintf und gets gibt ( bin halt noch anfänger ) jetzt kann ich mir vostellen wie ich das machen könnte



  • Man kann natürlich auch ganz stupide den Array raw in eine Datei schreiben, mit fwrite und fread 😉


Anmelden zum Antworten