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.

46 lines
1.3 KiB

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include "spieler.h"
#include "Moving.h"
#include "Laeufer.h"
#include "Spielstatus.h"
bool istzugerlaubt_Laeufer(char** brett, int startX, int startY, int endX, int endY, Player player) {
// Überprüfen, ob der Zug innerhalb des Bretts liegt
if (endX < 0 || endX > 7 || endY < 0 || endY > 7) {
return false;
}
// Prüfen, ob eine gegnerische Figur den Weg kreuzt
int deltaX = abs(endX - startX);
int deltaY = abs(endY - startY);
// Überprüfen, ob der Zug eine gültige Diagonalbewegung ist
if (deltaX == deltaY) {
int xDirection = (endX - startX) > 0 ? 1 : -1;
int yDirection = (endY - startY) > 0 ? 1 : -1;
int x = startX + xDirection;
int y = startY + yDirection;
// Die Schleife, solange x nicht gleich endX ist, jedes Feld auf dem Weg des Läufers testen
while (x != endX) {
// Aktuelles Feld auf dem Brett prüfen, ob es leer ist
if (brett[x][y] != ' ') {
// Wenn das aktuelle Feld nicht leer ist, ist der Zug nicht erlaubt
return false;
}
// Zum nächsten Feld in der Zugrichtung bewegen
x += xDirection;
y += yDirection;
}
return true;
}
return false;
}