Browse Source

Feldsicherheit Turm + Tests, Anton Lohrey

remotes/origin/Läufer-fertig,-Hendrik-Voß
fdai7492 11 months ago
parent
commit
08441e30c7
  1. 48
      src/Koenig.c
  2. 1
      src/Koenig.h
  3. 26
      test/test_Feldsicherheit.c

48
src/Koenig.c

@ -28,6 +28,51 @@ bool GreiftBauerAn(char** Brett, int x, int y, Player player) {
return false; return false;
} }
bool GreiftTurmAn(char** Brett, int x, int y, Player player) {
char Turm = player == PLAYER_WHITE ? 'r' : 'R';
// Check Vertikal Hoch
for (int i = y - 1; i >= 0; i--) {
if (Brett[i][x] != ' ') {
if (Brett[i][x] == Turm) {
return true;
}
break; // Stoppt wenn irgendeine Figur gefunden wird
}
}
// Vertikal Runter
for (int i = y + 1; i < 8; i++) {
if (Brett[i][x] != ' ') {
if (Brett[i][x] == Turm) {
return true;
}
break;
}
}
// Horizontal Links
for (int j = x - 1; j >= 0; j--) {
if (Brett[y][j] != ' ') {
if (Brett[y][j] == Turm) {
return true;
}
break;
}
}
// Horizontal Rechts
for (int j = x + 1; j < 8; j++) {
if (Brett[y][j] != ' ') {
if (Brett[y][j] == Turm) {
return true;
}
break;
}
}
return false;
}
bool GreiftSpringerAn(char** Brett, int x, int y, Player player) { bool GreiftSpringerAn(char** Brett, int x, int y, Player player) {
int Springerzüge[8][2] = { int Springerzüge[8][2] = {
{2, 1}, {1, 2}, {-1, 2}, {-2, 1}, {2, 1}, {1, 2}, {-1, 2}, {-2, 1},
@ -56,6 +101,9 @@ bool istFeldUnsicher(char** Brett, int x, int y, Player player) {
if (GreiftBauerAn(Brett, x, y, player)) { if (GreiftBauerAn(Brett, x, y, player)) {
return true; return true;
} }
if (GreiftTurmAn(Brett, x, y, player)) {
return true;
}
return false; return false;
} }

1
src/Koenig.h

@ -2,6 +2,7 @@
#define Koenig #define Koenig
#include "Spieler.h" #include "Spieler.h"
bool GreiftBauerAn(char** Brett, int x, int y, Player player); bool GreiftBauerAn(char** Brett, int x, int y, Player player);
bool GreiftTurmAn(char** Brett, int x, int y, Player player);
bool GreiftSpringerAn(char** Brett, int x, int y, Player player); bool GreiftSpringerAn(char** Brett, int x, int y, Player player);
bool istFeldUnsicher(char** Brett, int x, int y, Player player); bool istFeldUnsicher(char** Brett, int x, int y, Player player);
bool istzugerlaubt_Koenig(char** Brett, int startX, int startY, int endX, int endY, Player player); bool istzugerlaubt_Koenig(char** Brett, int startX, int startY, int endX, int endY, Player player);

26
test/test_Feldsicherheit.c

@ -45,6 +45,32 @@ void test_GreiftBauerAn(void) {
freeTestBrett(Brett); freeTestBrett(Brett);
} }
void test_GreiftTurmAn(void) {
char** Brett = ErstelleTestBrett();
// Plaziert weißen Turm auf d4 (3,3) und testet für Angriffe
Brett[3][3] = 'R';
Player player = PLAYER_BLACK;
TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 3, 0, player)); // Checkt vertikalen Angriff auf d1
TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 3, 7, player)); // Checkt vertikalen Angriff auf d8
TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 0, 3, player)); // Checkt horizontalen Angriff auf a4
TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 7, 3, player)); // Checkt horizontalen Angriff auf h4
// Plaziert schwarzen Turm auf e5 (4,4) und Tauscht Spieler zu weiß
Brett[3][3] = ' '; // Alten turm wegmachen
Brett[4][4] = 'r';
player = PLAYER_WHITE;
TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 4, 0, player)); // Checkt vertikalen Angriff auf e1
TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 4, 7, player)); // Checkt vertikalen Angriff auf e8
TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 0, 4, player)); // Checkt horizontalen Angriff auf a5
TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 7, 4, player)); // Checkt horizontalen Angriff auf h5
// Checkt sicheres Feld
TEST_ASSERT_FALSE(GreiftTurmAn(Brett, 0, 0, player));
freeTestBrett(Brett);
}
void test_GreiftSpringerAn(void) { void test_GreiftSpringerAn(void) {
char** Brett = ErstelleTestBrett(); char** Brett = ErstelleTestBrett();

Loading…
Cancel
Save