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

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include "spieler.h"
#include "Moving.h"
#include "Springer.h"
bool istzugerlaubt_Springer(char** Brett, int startX, int startY, int endX, int endY, Player player) {
// Schauen ob der zug auf dem Spielbrett passiert
if (endX < 0 || endX >= 8 || endY < 0 || endY >= 8) {
return false;
}
// Berechnung des unterschieds der start und endpositionen
int dx = abs(endX - startX);
int dy = abs(endY - startY);
// Schaut ob die bewegung eine L-form hat
if ((dx == 2 && dy == 1) || (dx == 1 && dy == 2)) {
char EndPosition = Brett[endY][endX];
//schaut ob die Endposition von einer eigenen Figur belegt ist
if (player == PLAYER_WHITE) {
if (isupper(EndPosition) && EndPosition != ' ') {
return false;
}
} else { // PLAYER_BLACK
if (islower(EndPosition) && EndPosition != ' ') {
return false;
}
}
if (player == PLAYER_WHITE && islower(EndPosition)) {
return true; // Erlaubter zug weil die Position leer ist oder von einer gegnerischen Figur belegt ist
} else if (player == PLAYER_BLACK && isupper(EndPosition)) {
return true; // Erlaubter zug weil die Position leer ist oder von einer gegnerischen Figur belegt ist
} else if (EndPosition == ' ') {
return true; // Erlaubter zug weil die Zielposition leer ist
}
}
return false; // kein erlaubter zug
}
bool bewegeSpringer(char** Brett, int startX, int startY, int endX, int endY, Player player) {
// Überprüfen ob der Zug legal ist
if (!istzugerlaubt_Springer(Brett, startX, startY, endX, endY, player)) {
return false; // Zug ist nicht erlaubt
}
char springer = Brett[startY][startX];
// Aktualisiere das Brett.
Brett[startY][startX] = ' ';
Brett[endY][endX] = springer;
return true;
}