Browse Source

refactoring: Laeufer.c, Hendrik Voß

remotes/origin/Spracharbeit
fdai7723 11 months ago
parent
commit
ca67bb8ad4
  1. 55
      src/Laeufer.c

55
src/Laeufer.c

@ -7,43 +7,40 @@
#include "Laeufer.h" #include "Laeufer.h"
#include "Spielstatus.h" #include "Spielstatus.h"
bool istzugerlaubt_Laeufer(char** Brett, int startX, int startY, int endX, int endY, Player player){
// Überprüfen Sie, ob der Zug innerhalb des Bretts liegt
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) { if (endX < 0 || endX > 7 || endY < 0 || endY > 7) {
return false; return false;
} }
// Prüfen ob eine gegnerische Figur den Weg kreuzt
// Richtung des Zuges bestimmen
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;
}
// Prüfen, ob eine gegnerische Figur den Weg kreuzt
int deltaX = abs(endX - startX);
int deltaY = abs(endY - startY);
// Wenn das getestete Feld leer ist, zum nächsten Feld in der Zugrichtung bewegen.
x += xDirection;
y += yDirection;
} // Schleife Ende
// Überprüfen, ob der Zug eine gültige Diagonalbewegung ist // Überprüfen, ob der Zug eine gültige Diagonalbewegung ist
if (abs(endX - startX) == abs(endY - startY)) {
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 true;
} }
// Wenn keines der obigen Kriterien erfüllt ist, ist der Zug ungültig
return false; return false;
} }
Loading…
Cancel
Save