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