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.

59 lines
1.9 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 "Springer.h"
  8. bool istzugerlaubt_Springer(char** Brett, int startX, int startY, int endX, int endY, Player player) {
  9. // Schauen ob der zug auf dem Spielbrett passiert
  10. if (endX < 0 || endX >= 8 || endY < 0 || endY >= 8) {
  11. return false;
  12. }
  13. // Berechnung des unterschieds der start und endpositionen
  14. int dx = abs(endX - startX);
  15. int dy = abs(endY - startY);
  16. // Schaut ob die bewegung eine L-form hat
  17. if ((dx == 2 && dy == 1) || (dx == 1 && dy == 2)) {
  18. char EndPosition = Brett[endY][endX];
  19. //schaut ob die Endposition von einer eigenen Figur belegt ist
  20. if (player == PLAYER_WHITE) {
  21. if (isupper(EndPosition) && EndPosition != ' ') {
  22. return false;
  23. }
  24. } else { // PLAYER_BLACK
  25. if (islower(EndPosition) && EndPosition != ' ') {
  26. return false;
  27. }
  28. }
  29. if (player == PLAYER_WHITE && islower(EndPosition)) {
  30. return true; // Erlaubter zug weil die Position leer ist oder von einer gegnerischen Figur belegt ist
  31. } else if (player == PLAYER_BLACK && isupper(EndPosition)) {
  32. return true; // Erlaubter zug weil die Position leer ist oder von einer gegnerischen Figur belegt ist
  33. } else if (EndPosition == ' ') {
  34. return true; // Erlaubter zug weil die Zielposition leer ist
  35. }
  36. }
  37. return false; // kein erlaubter zug
  38. }
  39. bool bewegeSpringer(char** Brett, int startX, int startY, int endX, int endY, Player player) {
  40. // Überprüfen ob der Zug legal ist
  41. if (!istzugerlaubt_Springer(Brett, startX, startY, endX, endY, player)) {
  42. return false; // Zug ist nicht erlaubt
  43. }
  44. char springer = Brett[startY][startX];
  45. // Aktualisiere das Brett.
  46. Brett[startY][startX] = ' ';
  47. Brett[endY][endX] = springer;
  48. return true;
  49. }