|
@ -28,14 +28,14 @@ char** Puzzlebrett_erstellen() { |
|
|
|
|
|
|
|
|
// Spielbrett befüllen, groß und kleinschreibung unterschiedlich um schwarz/weiß zu trennen |
|
|
// Spielbrett befüllen, groß und kleinschreibung unterschiedlich um schwarz/weiß zu trennen |
|
|
char Aufbau[8][8] = { |
|
|
char Aufbau[8][8] = { |
|
|
{ ' ' , 'K' , ' ' , ' ' , 'R' , ' ' , ' ' , ' ' }, |
|
|
|
|
|
{ ' ' , 'P' , 'P' , ' ' , ' ' , ' ' , 'r' , ' ' }, |
|
|
|
|
|
{ 'P' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' }, |
|
|
|
|
|
{ ' ' , ' ' , 'b' , ' ' , ' ' , ' ' , ' ' , ' ' }, |
|
|
|
|
|
{ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , 'P' }, |
|
|
|
|
|
{ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , 'p' }, |
|
|
|
|
|
{ 'p' , 'p' , 'p' , ' ' , ' ' , ' ' , ' ' , ' ' }, |
|
|
|
|
|
{ ' ' , 'k' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' } |
|
|
|
|
|
|
|
|
{ 'R' , 'N' , ' ' , 'K' , ' ' , ' ' , 'N' , 'R' }, |
|
|
|
|
|
{ 'P' , 'P' , 'P' , ' ' , ' ' , ' ' , 'B' , 'P' }, |
|
|
|
|
|
{ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' }, |
|
|
|
|
|
{ ' ' , ' ' , ' ' , 'P' , ' ' , 'B' , ' ' , ' ' }, |
|
|
|
|
|
{ ' ' , ' ' , ' ' , ' ' , 'D' , ' ' , ' ' , ' ' }, |
|
|
|
|
|
{ ' ' , ' ' , 'n' , ' ' , ' ' , 'n' , ' ' , ' ' }, |
|
|
|
|
|
{ 'p' , 'p' , 'p' , ' ' , 'p' , 'p' , 'p' , 'p' }, |
|
|
|
|
|
{ 'r' , ' ' , 'b' , 'k' , 'd' , 'b' , ' ' , 'r' } |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
for (int i = 0; i < 8; i++) { |
|
|
for (int i = 0; i < 8; i++) { |
|
@ -72,44 +72,3 @@ void Puzzlebrettspeicher_freigeben(char** Brett) { |
|
|
|
|
|
|
|
|
free(Brett); |
|
|
free(Brett); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
bool loesung_abchecken(char** Brett) { |
|
|
|
|
|
// checke nach dem gegnerischen König (kleines 'k') ab |
|
|
|
|
|
int koenig_X = -1, koenig_Y = -1; |
|
|
|
|
|
for (int i = 0; i < 8; i++) { |
|
|
|
|
|
for (int j = 0; j < 8; j++) { |
|
|
|
|
|
if (Brett[i][j] == 'k') { |
|
|
|
|
|
koenig_X = i; |
|
|
|
|
|
koenig_Y = j; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if (koenig_X != -1 && koenig_Y != -1) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Überprüfe, ob der gegnerische König schachmatt auf dem feld |
|
|
|
|
|
if (koenig_X == -1 || koenig_Y == -1) { |
|
|
|
|
|
// König nicht gefunden -> error |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Überprüfe, ob der gegnerische König von einer Figur bedroht wird |
|
|
|
|
|
for (int i = 0; i < 8; i++) { |
|
|
|
|
|
for (int j = 0; j < 8; j++) { |
|
|
|
|
|
if (Brett[i][j] == 'R') { |
|
|
|
|
|
// Überprüfe, ob der Turm den König horizontal bedroht |
|
|
|
|
|
if (i == 7 && j == 4) { |
|
|
|
|
|
// Der Turm bedroht den König |
|
|
|
|
|
printf("Puzzle geloest"); |
|
|
|
|
|
return true; // gelöst |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
// Wenn keine Figur den gegnerischen König bedroht, ist das Puzzle nicht gelöst |
|
|
|
|
|
printf("Puzzle nicht gelöst"); |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|