Browse Source

Anfang König + test, Anton Lohrey

remotes/origin/Läufer-fertig,-Hendrik-Voß
fdai7492 11 months ago
parent
commit
2c86630ed5
  1. 31
      src/Koenig.c
  2. 6
      src/Koenig.h
  3. 48
      test/test_Koenig.c

31
src/Koenig.c

@ -0,0 +1,31 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include "spieler.h"
#include "Moving.h"
#include "Koenig.h"
bool istzugerlaubt_Koenig(char** Brett, int startX, int startY, int endX, int endY, Player player) {
// Schauen ob der zug auf dem Spielbrett passiert
if (endX < 0 || endX >= 8 || endY < 0 || endY >= 8)
return false;
// Berechnung des unterschieds der start und endpositionen
int dx = abs(endX - startX);
int dy = abs(endY - startY);
// Schauen ob sich nur ein feld bewegt wird
if (dx > 1 || dy > 1) return false;
// Nicht auf befreundete Figuren bewegen
char endPosition = Brett[endY][endX];
if (player == PLAYER_WHITE && isupper(endPosition))
return false;
if (player == PLAYER_BLACK && islower(endPosition))
return false;
// mehr checks noch benötigt
return true;
}

6
src/Koenig.h

@ -0,0 +1,6 @@
#ifndef Springer
#define Springer
#include "Spieler.h"
bool istzugerlaubt_Koenig(char** Brett, int startX, int startY, int endX, int endY, Player player);
#endif // Springer

48
test/test_Koenig.c

@ -0,0 +1,48 @@
#ifdef TEST
#include "unity.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "Spieler.h"
#include "Schachbrett.h"
#include "Koenig.h"
void test_istzugerlaubt_Koenig_LegalMoves(void) {
char **Brett = Schachbrett_erstellen();
Player player = PLAYER_WHITE;
//Vorbereitung für Test
Brett[1][4] = ' ';
Brett[2][4] = 'p';
// Test bewegung
TEST_ASSERT_TRUE(istzugerlaubt_Koenig(Brett, 4, 0, 4, 1, player)); // e1 zu e2
TEST_ASSERT_TRUE(istzugerlaubt_Koenig(Brett, 4, 1, 4, 2, player)); // e2 zu e3 (Einnehmen von Figur)
Schachbrettspeicher_freigeben(Brett);
Brett = Schachbrett_erstellen();
player = PLAYER_BLACK;
//Vorbereitung für Test
Brett[6][4] = ' ';
Brett[5][4] = 'P';
// Test bewegung
TEST_ASSERT_TRUE(istzugerlaubt_Koenig(Brett, 4, 7, 4, 6, player)); // e8 zu e7
TEST_ASSERT_TRUE(istzugerlaubt_Koenig(Brett, 4, 6, 4, 5, player)); // e7 zu e6 (Einnehmen von Figur)
Schachbrettspeicher_freigeben(Brett);
}
void test_istzugerlaubt_Koenig_IllegalMoves(void) {
char **Brett = Schachbrett_erstellen();
Player player = PLAYER_WHITE;
// Illegaler zug: König versucht sich 2 Felder zu bewegen
TEST_ASSERT_FALSE(istzugerlaubt_Koenig(Brett, 4, 0, 4, 2, player));
// Illegaler zug: König versucht sich auf besetztes Feld zu bewegen
TEST_ASSERT_FALSE(istzugerlaubt_Koenig(Brett, 4, 0, 3, 1, player));
Schachbrettspeicher_freigeben(Brett);
}
#endif // TEST
Loading…
Cancel
Save