You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.4 KiB

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include "Spieler.h"
#include "Moving.h"
#include "Dame.h"
bool istzugerlaubt_Dame(char** Brett, int startX, int startY, int endX, int endY, Player player){
// Überprüfe, ob der Zug auf dem Spielbrett liegt
if (endX < 0 || endX >= 8 || endY < 0 || endY >= 8)
return false;
// Berechne den Unterschied der Start- und Endpositionen
int dx = abs(endX - startX);
int dy = abs(endY - startY);
// Überprüfe, ob sich die Dame nur vertikal, horizontal oder diagonal bewegt
if (dx != 0 && dy != 0 && dx != dy)
return false;
// Überprüfe, ob die Dame über andere Figuren springt
if (dx > 0) {
int dirX = (endX - startX) / dx;
for (int i = 1; i < dx; i++) {
if (Brett[startY + i * dirX][startX + i * dirX] != ' ')
return false;
}
}
if (dy > 0) {
int dirY = (endY - startY) / dy;
for (int i = 1; i < dy; i++) {
if (Brett[startY + i * dirY][startX + i * dirY] != ' ')
return false;
}
}
// Überprüfe, ob die Dame eine feindliche Figur schlägt oder auf ein leeres Feld zieht
char endPosition = Brett[endY][endX];
if (player == PLAYER_WHITE && isupper(endPosition))
return false;
if (player == PLAYER_BLACK && islower(endPosition))
return false;
return true;
}