From 5b5d0d3969bd38a40b5812f7f81d88b9e9e625c0 Mon Sep 17 00:00:00 2001 From: fdai7492 Date: Fri, 2 Feb 2024 02:24:31 +0000 Subject: [PATCH] =?UTF-8?q?Springer=20hinzugef=C3=BCgt=20+=20Test,=20Anton?= =?UTF-8?q?=20Lohrey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Springer.c | 31 +++++++++++++++++++++++++++++++ src/Springer.h | 7 +++++++ test/test_Springer.c | 18 ++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 src/Springer.c create mode 100644 src/Springer.h create mode 100644 test/test_Springer.c diff --git a/src/Springer.c b/src/Springer.c new file mode 100644 index 0000000..785d840 --- /dev/null +++ b/src/Springer.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#include "spieler.h" +#include "Moving.h" +#include "Springer.h" + +bool istzugerlaubt_Springer(char** Brett, int startX, int startY, int endX, int endY, Player player) { + // Berechnung des unterschieds der start und endpositionen + int dx = abs(endX - startX); + int dy = abs(endY - startY); + + + + // Schaut ob die bewegung eine L-form hat + if ((dx == 2 && dy == 1) || (dx == 1 && dy == 2)) { + + char EndPosition = Brett[endY][endX]; + + if (player == PLAYER_WHITE && islower(EndPosition)) { + return true; // Erlaubter zug weil die Position leer ist oder von einer gegnerischen Figur belegt ist + } else if (player == PLAYER_BLACK && isupper(EndPosition)) { + return true; // Erlaubter zug weil die Position leer ist oder von einer gegnerischen Figur belegt ist + } else if (EndPosition == ' ') { + return true; // Erlaubter zug weil die Zielposition leer ist + } + } + + return false; // kein erlaubter zug +} diff --git a/src/Springer.h b/src/Springer.h new file mode 100644 index 0000000..f7cc8e7 --- /dev/null +++ b/src/Springer.h @@ -0,0 +1,7 @@ +#ifndef Springer +#define Springer +#include "spieler.h" + +bool istzugerlaubt_Springer(char** Brett, int startX, int startY, int endX, int endY, Player player); + +#endif // Springer diff --git a/test/test_Springer.c b/test/test_Springer.c new file mode 100644 index 0000000..790a465 --- /dev/null +++ b/test/test_Springer.c @@ -0,0 +1,18 @@ +#ifdef TEST +#include "unity.h" +#include +#include +#include +#include "Springer.h" +#include "Schachbrett.h" +#include "Spieler.h" + +void test_istzugerlaubt_Springer_LegalMove(void) { + char **Brett = Schachbrett_erstellen(); + + // Teste legaler Zug für weißen Springer : b1 zu a3 + TEST_ASSERT_TRUE(istzugerlaubt_Springer(Brett, 1, 0, 0, 2, PLAYER_WHITE)); + + Schachbrettspeicher_freigeben(Brett); +} +#endif // TEST