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