Browse Source

Merge branch 'main' of gitlab.cs.hs-fulda.de:fdai7834/taktikmeister

main
Emman Mensdorf 11 months ago
parent
commit
5273913dbe
  1. 42
      src/Bauernumwandlung.c
  2. 6
      src/Historie.c
  3. 2
      src/Koenig.c
  4. 2
      src/Misc.c
  5. 8
      src/Speichern.c

42
src/Bauernumwandlung.c

@ -1,54 +1,50 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h> #include <stdbool.h>
#include <string.h>
#include "spieler.h" #include "spieler.h"
#include "Moving.h" #include "Moving.h"
#include "Bauer.h" #include "Bauer.h"
#include "Input.h" #include "Input.h"
bool ist_umwandlung_gerlaubt_Bauer(char** Brett, int startX, int startY, int endX, int endY, Player player) { bool ist_umwandlung_gerlaubt_Bauer(char** Brett, int startX, int startY, int endX, int endY, Player player) {
if((player == PLAYER_WHITE) && (endY == 7) && (Brett[startY][startX] == 'P')){
if ((player == PLAYER_WHITE) && (endY == 7) && (Brett[startY][startX] == 'P')) {
return true; return true;
}else if((player == PLAYER_BLACK) && (endY == 0) && (Brett[startY][startX] == 'p')){
return true;
}else{
return false;
}
} else if ((player == PLAYER_BLACK) && (endY == 0) && (Brett[startY][startX] == 'p')) {
return true;
} else {
return false;
}
} }
char* bauer_umwandel_abfrage(char** Brett, int startX, int startY, int endX, int endY, Player player){ char* bauer_umwandel_abfrage(char** Brett, int startX, int startY, int endX, int endY, Player player){
if(ist_umwandlung_gerlaubt_Bauer(Brett ,startX,startY,endX,endY,player) == true){ if(ist_umwandlung_gerlaubt_Bauer(Brett ,startX,startY,endX,endY,player) == true){
char* Figur; char* Figur;
printf("Welche Figur soll erstellt werden?");
printf("Which piece would you like to create?");
if(player == PLAYER_WHITE){ if(player == PLAYER_WHITE){
printf("Q für Dame, R für Turm, B für Läufer oder N für Springer");
printf("Q for Queen, R for Rook, B for Bishop, or N for Knight");
Figur = getUserInput(); Figur = getUserInput();
}else{ }else{
printf("q für Dame, r für Turm, b für Läufer oder n für Springer");
printf("q for Queen, r for Rook, b for Bishop, or n for Knight");
Figur = getUserInput(); Figur = getUserInput();
} }
if((player == PLAYER_WHITE && (Figur == 'Q' || Figur == 'R' || Figur == 'B' || Figur == 'N')) ||
(player == PLAYER_BLACK && (Figur == 'q' || Figur == 'r' || Figur == 'b' || Figur == 'n'))){
if ((player == PLAYER_WHITE && (Figur == 'Q' || Figur == 'R' || Figur == 'B' || Figur == 'N')) ||
(player == PLAYER_BLACK && (Figur == 'q' || Figur == 'r' || Figur == 'b' || Figur == 'n'))) {
return Figur; return Figur;
}else{
return 'W';
} else {
return 'W'; // Undefiniertes Zeichen als Fehlerwert
} }
} }
return 'W'; // Undefiniertes Zeichen als Fehlerwert
} }
void bauer_umwandeln(char** Brett, int startX, int startY, int endX, int endY, Player player){
char* Figur = bauer_umwandel_abfrage(Brett,startX,startY,endX,endY,player);
if(Figur != 'W'){
void bauer_umwandeln(char** Brett, int startX, int startY, int endX, int endY, Player player) {
char Figur = bauer_umwandel_abfrage(Brett, startX, startY, endX, endY, player);
if (Figur != 'W') {
Brett[endY][endX] = Figur; Brett[endY][endX] = Figur;
Brett[startY][startX] = ' '; Brett[startY][startX] = ' ';
}else{ }else{
printf("Zug ungültig");
printf("Invalid move");
} }
} }

6
src/Historie.c

@ -62,14 +62,14 @@ void hinzufuegen_historie(int** Historie, int startX, int startY, int endX, int
} }
void print_Historie(int** Historie, int anzahl_Zuege) { void print_Historie(int** Historie, int anzahl_Zuege) {
printf("Historie der Züge:\n");
printf("History of Moves:\n");
for (int i = 0; i <= anzahl_Zuege; i++) { for (int i = 0; i <= anzahl_Zuege; i++) {
if(Historie[i][4] == 0){ if(Historie[i][4] == 0){
printf("%d. Zug: Von (%d, %d) nach (%d, %d) von Spieler Weiß\n", i + 1,
printf("%d. Move: From (%d, %d) to (%d, %d) by White Player\n", i + 1,
Historie[i][0], Historie[i][1], Historie[i][0], Historie[i][1],
Historie[i][2], Historie[i][3]); Historie[i][2], Historie[i][3]);
}else{ }else{
printf("%d. Zug: Von (%d, %d) nach (%d, %d) von Spieler Schwarz\n", i + 1,
printf("%d. Move: From (%d, %d) to (%d, %d) by Black Player\n", i + 1,
Historie[i][0], Historie[i][1], Historie[i][0], Historie[i][1],
Historie[i][2], Historie[i][3]); Historie[i][2], Historie[i][3]);
} }

2
src/Koenig.c

@ -301,7 +301,7 @@ void rochiere(char** Brett, Player player, bool kingside, Spielstatus* status) {
int startY = player == PLAYER_WHITE ? 0 : 7; // Startreihe basierend auf dem Spieler int startY = player == PLAYER_WHITE ? 0 : 7; // Startreihe basierend auf dem Spieler
int koenigStartX = 4; // König x position int koenigStartX = 4; // König x position
if (!kannRochieren(Brett,koenigStartX, startY, player, status, kingside)) { if (!kannRochieren(Brett,koenigStartX, startY, player, status, kingside)) {
printf("Rochieren ist unter den aktuellen Bedingungen nicht möglich.\n");
printf("Castling is not possible under the current conditions.\n");
return; // Beende die Funktion, wenn Rochieren nicht möglich ist return; // Beende die Funktion, wenn Rochieren nicht möglich ist
} }
int koenigEndX = kingside ? 6 : 2; // König bewegt sich zwei Felder int koenigEndX = kingside ? 6 : 2; // König bewegt sich zwei Felder

2
src/Misc.c

@ -32,7 +32,7 @@ void anzahl_Zuege(char** brett, Player player) {
} }
} }
else { else {
printf("Spieler Weiß hat %d Züge gebraucht und Spieler Schwarz %d!\n");
printf("Player White took %d moves, and Player Black took %d moves!\n");
} }
} }

8
src/Speichern.c

@ -11,7 +11,7 @@ void speichern_spielstand_historie(int** Historie, int anzahl_Zuege, const char*
FILE* datei = fopen(dateiName, "wb"); FILE* datei = fopen(dateiName, "wb");
if (datei == NULL) { if (datei == NULL) {
printf("Fehler beim Öffnen der Datei zum Speichern.\n");
printf("Error opening the file for saving.\n");
return; return;
} }
@ -29,7 +29,7 @@ int laden_spielstand_historie(int*** Historie, int* anzahl_Zuege, const char* da
FILE* datei = fopen(dateiName, "rb"); FILE* datei = fopen(dateiName, "rb");
if (datei == NULL) { if (datei == NULL) {
printf("Fehler beim Öffnen der Datei zum Laden.\n");
printf("Error opening the file for loading.\n");
return 0; // Rückgabewert 0 bedeutet Fehler return 0; // Rückgabewert 0 bedeutet Fehler
} }
@ -40,7 +40,7 @@ int laden_spielstand_historie(int*** Historie, int* anzahl_Zuege, const char* da
*Historie = (int**)malloc((*anzahl_Zuege + 1) * sizeof(int*)); *Historie = (int**)malloc((*anzahl_Zuege + 1) * sizeof(int*));
if (*Historie == NULL) { if (*Historie == NULL) {
printf("Fehler bei der Speicherzuweisung.\n");
printf("Error allocating memory.\n");
fclose(datei); fclose(datei);
return 0; return 0;
} }
@ -58,7 +58,7 @@ void speichern_spielstand_schachbrett(char** Brett, const char* dateiName){
FILE* datei = fopen(dateiName, "wb"); FILE* datei = fopen(dateiName, "wb");
if (datei == NULL) { if (datei == NULL) {
printf("Fehler beim Öffnen der Datei zum Speichern.\n");
printf("Error opening the file for saving.\n");
return; return;
} }

Loading…
Cancel
Save