Browse Source

bewegeSpringer + Tests, Anton Lohrey

remotes/origin/Läufer-fertig,-Hendrik-Voß
fdai7492 11 months ago
parent
commit
dc75886b6e
  1. 14
      src/Springer.c
  2. 2
      src/Springer.h
  3. 39
      test/test_Springer.c

14
src/Springer.c

@ -43,3 +43,17 @@ bool istzugerlaubt_Springer(char** Brett, int startX, int startY, int endX, int
return false; // kein erlaubter zug
}
bool bewegeSpringer(char** Brett, int startX, int startY, int endX, int endY, Player player) {
// Überprüfen ob der Zug legal ist
if (!istzugerlaubt_Springer(Brett, startX, startY, endX, endY, player)) {
return false; // Zug ist nicht erlaubt
}
char springer = Brett[startY][startX];
// Aktualisiere das Brett.
Brett[startY][startX] = ' ';
Brett[endY][endX] = springer;
return true;
}

2
src/Springer.h

@ -3,5 +3,5 @@
#include "spieler.h"
bool istzugerlaubt_Springer(char** Brett, int startX, int startY, int endX, int endY, Player player);
bool bewegeSpringer(char** Brett, int startX, int startY, int endX, int endY, Player player);
#endif // Springer

39
test/test_Springer.c

@ -42,4 +42,43 @@ void test_istzugerlaubt_Springer_IllegalMove(void) {
Schachbrettspeicher_freigeben(Brett);
}
void test_bewegeSpringer(void) {
char **Brett = Schachbrett_erstellen();
bool Ergebnis;
// Scenario 1: Legaler Zug, weißer Springer von b1 zu c3
Ergebnis = bewegeSpringer(Brett, 1, 0, 2, 2, PLAYER_WHITE);
TEST_ASSERT_TRUE(Ergebnis);
TEST_ASSERT_EQUAL_CHAR('N', Brett[2][2]);
TEST_ASSERT_EQUAL_CHAR(' ', Brett[0][1]);
Schachbrettspeicher_freigeben(Brett);
Brett = Schachbrett_erstellen();
// Scenario 2: Illegaler Zug , vom Brett
Ergebnis = bewegeSpringer(Brett, 7, 6, 8, 8, PLAYER_WHITE);
TEST_ASSERT_FALSE(Ergebnis);
// Scenario 3: Legaler Zug, schwarzer Springer von g8 zu f6
Ergebnis = bewegeSpringer(Brett, 6, 7, 5, 5, PLAYER_BLACK);
TEST_ASSERT_TRUE(Ergebnis);
TEST_ASSERT_EQUAL_CHAR('n', Brett[5][5]);
TEST_ASSERT_EQUAL_CHAR(' ', Brett[7][6]);
Schachbrettspeicher_freigeben(Brett);
Brett = Schachbrett_erstellen();
// Scenario 4: Illegaler Zug, schwarzer Springer bewegt sich auf andere schwarze Figur
Brett[5][5] = 'n'; // ein anderer Springer als Hindernis
Ergebnis = bewegeSpringer(Brett, 6, 7, 5, 5, PLAYER_BLACK);
TEST_ASSERT_FALSE(Ergebnis);
// Scenario 5: Legaler Zug zum einnehmen feindlicher Figur
Brett[5][5] = 'P'; // Weißer Bauer auf F6
Ergebnis = bewegeSpringer(Brett, 6, 7, 5, 5, PLAYER_BLACK);
TEST_ASSERT_TRUE(Ergebnis);
TEST_ASSERT_EQUAL_CHAR('n', Brett[5][5]);
Schachbrettspeicher_freigeben(Brett);
}
#endif // TEST
Loading…
Cancel
Save