Browse Source

Feldsicherheit Läufer + Tests, Anton Lohrey

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

50
src/Koenig.c

@ -93,6 +93,53 @@ bool GreiftSpringerAn(char** Brett, int x, int y, Player player) {
}
return false;
}
bool GreiftLaeuferAn(char** Brett, int x, int y, Player player) {
char Laeufer = player == PLAYER_WHITE ? 'b' : 'B';
// Check oben Rechts
for (int i = x + 1, j = y - 1; i < 8 && j >= 0; i++, j--) {
if (Brett[j][i] != ' ') {
if (Brett[j][i] == Laeufer) {
return true;
}
break;
}
}
// Check oben Links
for (int i = x - 1, j = y - 1; i >= 0 && j >= 0; i--, j--) {
if (Brett[j][i] != ' ') {
if (Brett[j][i] == Laeufer) {
return true;
}
break;
}
}
// Check unten Rechts
for (int i = x + 1, j = y + 1; i < 8 && j < 8; i++, j++) {
if (Brett[j][i] != ' ') {
if (Brett[j][i] == Laeufer) {
return true;
}
break;
}
}
// Check unten Links
for (int i = x - 1, j = y + 1; i >= 0 && j < 8; i--, j++) {
if (Brett[j][i] != ' ') {
if (Brett[j][i] == Laeufer) {
return true;
}
break;
}
}
return false;
}
bool istFeldUnsicher(char** Brett, int x, int y, Player player) {
if (GreiftSpringerAn(Brett, x, y, player)) {
@ -104,6 +151,9 @@ bool istFeldUnsicher(char** Brett, int x, int y, Player player) {
if (GreiftTurmAn(Brett, x, y, player)) {
return true;
}
if (GreiftLaeuferAn(Brett, x, y, player)) {
return true;
}
return false;
}

1
src/Koenig.h

@ -4,6 +4,7 @@
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 GreiftLaeuferAn(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);
#endif // Koenig

52
test/test_Feldsicherheit.c

@ -89,5 +89,57 @@ void test_GreiftSpringerAn(void) {
freeTestBrett(Brett);
}
void test_GreiftLaeuferAn(void) {
char** Brett = ErstelleTestBrett();
// Plaziert einen weißen Läufer auf c4 (2,3) und testet Angriffe
Brett[3][2] = 'B';
Player player = PLAYER_BLACK;
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 0, 1, player)); // Check unten Links
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 5, 0, player)); // Check oben Links
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 4, 5, player)); // Check unten Rechts
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 3, 2, player)); // Check oben Rechts
// Plaziert einen schwarzen Läufer auf e5 (4,4) und testet Angriffe vom anderen spieler
Brett[2][3] = ' ';
Brett[4][4] = 'b';
player = PLAYER_WHITE;
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 2, 2, player)); // Check unten Rechts
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 2, 6, player)); // Check oben Links
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 6, 6, player)); // Check unten Rechts
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 6, 2, player)); // Check oben Rechts
// Check sicheres Feld
TEST_ASSERT_FALSE(GreiftLaeuferAn(Brett, 0, 1, player));
freeTestBrett(Brett);
}
void test_GreiftLaeuferAn(void) {
char** Brett = ErstelleTestBrett();
// Plaziert einen weißen Läufer auf c4 (2,3) und testet Angriffe
Brett[3][2] = 'B';
Player player = PLAYER_BLACK;
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 0, 1, player)); // Check unten Links
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 5, 0, player)); // Check oben Links
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 4, 5, player)); // Check unten Rechts
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 3, 2, player)); // Check oben Rechts
// Plaziert einen schwarzen Läufer auf e5 (4,4) und testet Angriffe vom anderen spieler
Brett[2][3] = ' ';
Brett[4][4] = 'b';
player = PLAYER_WHITE;
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 2, 2, player)); // Check unten Rechts
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 2, 6, player)); // Check oben Links
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 6, 6, player)); // Check unten Rechts
TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 6, 2, player)); // Check oben Rechts
// Check sicheres Feld
TEST_ASSERT_FALSE(GreiftLaeuferAn(Brett, 0, 1, player));
freeTestBrett(Brett);
}
#endif // TEST
Loading…
Cancel
Save