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

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <ctype.h>
  5. #include "spieler.h"
  6. #include "Moving.h"
  7. #include "Laeufer.h"
  8. #include "Spielstatus.h"
  9. bool istzugerlaubt_Laeufer(char** brett, int startX, int startY, int endX, int endY, Player player) {
  10. // Überprüfen, ob der Zug innerhalb des Bretts liegt
  11. if (endX < 0 || endX > 7 || endY < 0 || endY > 7) {
  12. return false;
  13. }
  14. // Prüfen, ob eine gegnerische Figur den Weg kreuzt
  15. int deltaX = abs(endX - startX);
  16. int deltaY = abs(endY - startY);
  17. // Überprüfen, ob der Zug eine gültige Diagonalbewegung ist
  18. if (deltaX == deltaY) {
  19. int xDirection = (endX - startX) > 0 ? 1 : -1;
  20. int yDirection = (endY - startY) > 0 ? 1 : -1;
  21. int x = startX + xDirection;
  22. int y = startY + yDirection;
  23. // Die Schleife, solange x nicht gleich endX ist, jedes Feld auf dem Weg des Läufers testen
  24. while (x != endX) {
  25. // Aktuelles Feld auf dem Brett prüfen, ob es leer ist
  26. if (brett[x][y] != ' ') {
  27. // Wenn das aktuelle Feld nicht leer ist, ist der Zug nicht erlaubt
  28. return false;
  29. }
  30. // Zum nächsten Feld in der Zugrichtung bewegen
  31. x += xDirection;
  32. y += yDirection;
  33. }
  34. return true;
  35. }
  36. return false;
  37. }