Browse Source

update um Spielstatus zu verwenden, Anton Lohrey

remotes/origin/Läufer-fertig,-Hendrik-Voß
fdai7492 11 months ago
parent
commit
13058ddd06
  1. 9
      src/Koenig.c
  2. 3
      src/Koenig.h
  3. 13
      test/test_Koenig.c

9
src/Koenig.c

@ -5,6 +5,7 @@
#include "spieler.h" #include "spieler.h"
#include "Moving.h" #include "Moving.h"
#include "Koenig.h" #include "Koenig.h"
#include "Spielstatus.h"
bool GreiftBauerAn(char** Brett, int x, int y, Player player) { bool GreiftBauerAn(char** Brett, int x, int y, Player player) {
// Checke für weißen Bauer // Checke für weißen Bauer
@ -258,11 +259,17 @@ bool istzugerlaubt_Koenig(char** Brett, int startX, int startY, int endX, int en
return true; return true;
} }
void bewegeKoenig(char** Brett, int startX, int startY, int endX, int endY, Player player) {
void bewegeKoenig(char** Brett, int startX, int startY, int endX, int endY, Player player, Spielstatus* status) {
if (istzugerlaubt_Koenig(Brett, startX, startY, endX, endY, player)) { if (istzugerlaubt_Koenig(Brett, startX, startY, endX, endY, player)) {
char Koenig = player == PLAYER_WHITE ? 'K' : 'k'; char Koenig = player == PLAYER_WHITE ? 'K' : 'k';
Brett[endY][endX] = Koenig; Brett[endY][endX] = Koenig;
Brett[startY][startX] = ' '; Brett[startY][startX] = ' ';
if (player == PLAYER_WHITE) {
status->BewegteSichWeißerKoenig = true;
} else {
status->BewegteSichSchwarzerKoenig = true;
}
} }
} }

3
src/Koenig.h

@ -1,6 +1,7 @@
#ifndef Koenig #ifndef Koenig
#define Koenig #define Koenig
#include "Spieler.h" #include "Spieler.h"
#include "Spielstatus.h"
bool GreiftBauerAn(char** Brett, int x, int y, Player player); bool GreiftBauerAn(char** Brett, int x, int y, Player player);
bool GreiftTurmAn(char** Brett, int x, int y, Player player); bool GreiftTurmAn(char** Brett, int x, int y, Player player);
bool GreiftSpringerAn(char** Brett, int x, int y, Player player); bool GreiftSpringerAn(char** Brett, int x, int y, Player player);
@ -10,5 +11,5 @@ bool GreiftKoenigAn(char** Brett, int x, int y, Player player);
bool istFeldUnsicher(char** Brett, int x, int y, Player player); bool istFeldUnsicher(char** Brett, int x, int y, Player player);
bool istKoenigImSchach(char** Brett, Player player); bool istKoenigImSchach(char** Brett, Player player);
bool istzugerlaubt_Koenig(char** Brett, int startX, int startY, int endX, int endY, Player player); bool istzugerlaubt_Koenig(char** Brett, int startX, int startY, int endX, int endY, Player player);
void bewegeKoenig(char** Brett, int startX, int startY, int endX, int endY, Player player);
void bewegeKoenig(char** Brett, int startX, int startY, int endX, int endY, Player player, Spielstatus* status);
#endif // Koenig #endif // Koenig

13
test/test_Koenig.c

@ -6,6 +6,7 @@
#include "Spieler.h" #include "Spieler.h"
#include "Schachbrett.h" #include "Schachbrett.h"
#include "Koenig.h" #include "Koenig.h"
#include "Spielstatus.h"
void test_istzugerlaubt_Koenig_LegalMoves(void) { void test_istzugerlaubt_Koenig_LegalMoves(void) {
@ -47,26 +48,30 @@ void test_istzugerlaubt_Koenig_IllegalMoves(void) {
} }
void test_Koenigbewegung_ValidMove(void) { void test_Koenigbewegung_ValidMove(void) {
char** Brett = Schachbrett_erstellen(); char** Brett = Schachbrett_erstellen();
Spielstatus status;
initalisiereSpielstatus(&status);
Brett[4][4] = 'K'; Brett[4][4] = 'K';
Player player = PLAYER_WHITE; Player player = PLAYER_WHITE;
bewegeKoenig(Brett, 4, 4, 5, 4, player); // Bewege König von e5 zu e6
bewegeKoenig(Brett, 4, 4, 5, 4, player,&status); // Bewege König von e5 zu e6
TEST_ASSERT_EQUAL('K', Brett[4][5]); // Schauen ob der König an der neuen stelle ist TEST_ASSERT_EQUAL('K', Brett[4][5]); // Schauen ob der König an der neuen stelle ist
TEST_ASSERT_EQUAL(' ', Brett[4][4]); // Schauen ob die alte stelle leer ist TEST_ASSERT_EQUAL(' ', Brett[4][4]); // Schauen ob die alte stelle leer ist
TEST_ASSERT_TRUE(status.BewegteSichWeißerKoenig);//Schauen ob sich passend der spielstatus ändert
Schachbrettspeicher_freigeben(Brett); Schachbrettspeicher_freigeben(Brett);
} }
void test_Koenigbewegung_InvalidMove(void) { void test_Koenigbewegung_InvalidMove(void) {
char** Brett = Schachbrett_erstellen(); char** Brett = Schachbrett_erstellen();
Spielstatus status;
initalisiereSpielstatus(&status);
Brett[4][4] = 'K'; Brett[4][4] = 'K';
Player player = PLAYER_WHITE; Player player = PLAYER_WHITE;
bewegeKoenig(Brett, 4, 4, 6, 6, player); // Versucht illegalen Zug zu machen
bewegeKoenig(Brett, 4, 4, 6, 6, player,&status); // Versucht illegalen Zug zu machen
TEST_ASSERT_EQUAL('K', Brett[4][4]); // Schauen ob der König an der alten stelle ist TEST_ASSERT_EQUAL('K', Brett[4][4]); // Schauen ob der König an der alten stelle ist
TEST_ASSERT_EQUAL(' ', Brett[4][6]); // Schauen ob die Zielstelle leer ist TEST_ASSERT_EQUAL(' ', Brett[4][6]); // Schauen ob die Zielstelle leer ist
TEST_ASSERT_FALSE(status.BewegteSichWeißerKoenig);//Schauen ob sich der spielstatus passend verhält
Schachbrettspeicher_freigeben(Brett); Schachbrettspeicher_freigeben(Brett);
} }
#endif // TEST #endif // TEST
Loading…
Cancel
Save