|
|
#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; }
|