Browse Source

Anfang Feldsicherheits-check + Test, Anton Lohrey

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

29
src/Koenig.c

@ -6,6 +6,35 @@
#include "Moving.h"
#include "Koenig.h"
bool GreiftSpringerAn(char** Brett, int x, int y, Player player) {
int Springerzüge[8][2] = {
{2, 1}, {1, 2}, {-1, 2}, {-2, 1},
{-2, -1}, {-1, -2}, {1, -2}, {2, -1}
};
for (int i = 0; i < 8; i++) {
int neuX = x + Springerzüge[i][0];
int neuY = y + Springerzüge[i][1];
if (neuX >= 0 && neuX < 8 && neuY >= 0 && neuY < 8) {
char Figur = Brett[neuY][neuX];
if (player == PLAYER_WHITE && Figur == 'n') {
return true;
} else if (player == PLAYER_BLACK && Figur == 'N') {
return true;
}
}
}
return false;
}
bool istFeldUnsicher(char** Brett, int x, int y, Player player) {
if (GreiftSpringerAn(Brett, x, y, player)) {
return true;
}
return false;
}
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)

9
src/Koenig.h

@ -1,6 +1,7 @@
#ifndef Springer
#define Springer
#ifndef Koenig
#define Koenig
#include "Spieler.h"
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);
#endif // Springer
#endif // Koenig

46
test/test_Feldsicherheit.c

@ -0,0 +1,46 @@
#ifdef TEST
#include "unity.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "Spieler.h"
#include "Koenig.h"
char** ErstelleTestBrett() {
char** Brett = malloc(8 * sizeof(char*));
for (int i = 0; i < 8; i++) {
Brett[i] = malloc(8 * sizeof(char));
for (int j = 0; j < 8; j++) {
Brett[i][j] = ' '; //Erstelle komplett leeres Brett
}
}
return Brett;
}
void freeTestBrett(char** Brett) {
for (int i = 0; i < 8; i++) {
free(Brett[i]);
}
free(Brett);
}
void test_GreiftSpringerAn(void) {
char** Brett = ErstelleTestBrett();
// Plaziert ein schwarzen Springer (3,4) und testet 'Angriff' auf e3 (4,2)
Brett[4][3] = 'n';
Player player = PLAYER_WHITE;
TEST_ASSERT_TRUE(GreiftSpringerAn(Brett, 4, 2, player));
// Plaziert ein weißen Springer (5,2) und testet 'Angriff' auf e5 (4,4)
Brett[2][5] = 'N';
player = PLAYER_BLACK;
TEST_ASSERT_TRUE(GreiftSpringerAn(Brett, 4, 4, player));
// Testet Feld ohne Bedrohung
TEST_ASSERT_FALSE(GreiftSpringerAn(Brett, 0, 0, player));
freeTestBrett(Brett);
}
#endif // TEST
Loading…
Cancel
Save