From 45112bd37a363bc613f48e7532d5f665d97ca497 Mon Sep 17 00:00:00 2001 From: fdai7492 Date: Fri, 2 Feb 2024 07:13:03 +0000 Subject: [PATCH] Feldsicherheit Bauer + Test, Anton Lohrey --- src/Koenig.c | 25 +++++++++++++++++++++++++ src/Koenig.h | 1 + test/test_Feldsicherheit.c | 21 +++++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/src/Koenig.c b/src/Koenig.c index b912f9a..3f7e7e1 100644 --- a/src/Koenig.c +++ b/src/Koenig.c @@ -6,6 +6,28 @@ #include "Moving.h" #include "Koenig.h" +bool GreiftBauerAn(char** Brett, int x, int y, Player player) { + // Checke für weißen Bauer + if (player == PLAYER_BLACK) { + if (y > 0 && x > 0 && Brett[y - 1][x - 1] == 'P') { // Linke Diagonale + return true; + } + if (y > 0 && x < 7 && Brett[y - 1][x + 1] == 'P') { // Rechte Diagonale + return true; + } + } + // Checke für schwarzen Bauer + if (player == PLAYER_WHITE) { + if (y < 7 && x > 0 && Brett[y + 1][x - 1] == 'p') { // Linke Diagonale + return true; + } + if (y < 7 && x < 7 && Brett[y + 1][x + 1] == 'p') { // Rechte Diagonale + return true; + } + } + return false; +} + bool GreiftSpringerAn(char** Brett, int x, int y, Player player) { int Springerzüge[8][2] = { {2, 1}, {1, 2}, {-1, 2}, {-2, 1}, @@ -31,6 +53,9 @@ bool istFeldUnsicher(char** Brett, int x, int y, Player player) { if (GreiftSpringerAn(Brett, x, y, player)) { return true; } + if (GreiftBauerAn(Brett, x, y, player)) { + return true; + } return false; } diff --git a/src/Koenig.h b/src/Koenig.h index f83b79c..e3d9657 100644 --- a/src/Koenig.h +++ b/src/Koenig.h @@ -1,6 +1,7 @@ #ifndef Koenig #define Koenig #include "Spieler.h" +bool GreiftBauerAn(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 istzugerlaubt_Koenig(char** Brett, int startX, int startY, int endX, int endY, Player player); diff --git a/test/test_Feldsicherheit.c b/test/test_Feldsicherheit.c index 0b2b5a4..42644fe 100644 --- a/test/test_Feldsicherheit.c +++ b/test/test_Feldsicherheit.c @@ -24,6 +24,27 @@ void freeTestBrett(char** Brett) { free(Brett); } +void test_GreiftBauerAn(void) { + char** Brett = ErstelleTestBrett(); + + // Plaziert weißen Bauer auf d5 (3,4) und testet 'angriff' auf c6 (2,5) und e6 (4,5) + Brett[4][3] = 'P'; + Player player = PLAYER_BLACK; + TEST_ASSERT_TRUE(GreiftBauerAn(Brett, 2, 5, player)); + TEST_ASSERT_TRUE(GreiftBauerAn(Brett, 4, 5, player)); + + // Plaziert schwarzen Bauer auf e4 (4,3) und testet 'angriff' auf d3 (3,2) und f3 (5,2) + Brett[3][4] = 'p'; + player = PLAYER_WHITE; + TEST_ASSERT_TRUE(GreiftBauerAn(Brett, 3, 2, player)); + TEST_ASSERT_TRUE(GreiftBauerAn(Brett, 5, 2, player)); + + // Test ein Feld ohne Bedrohung + TEST_ASSERT_FALSE(GreiftBauerAn(Brett, 0, 0, player)); + + freeTestBrett(Brett); +} + void test_GreiftSpringerAn(void) { char** Brett = ErstelleTestBrett();