From ff4961c714bd5b80b2078734227002a5e69e34e5 Mon Sep 17 00:00:00 2001 From: fdai7726 Date: Wed, 7 Feb 2024 15:33:31 +0100 Subject: [PATCH 01/10] refactoring: change function name from showInvalidInputMessage() int showInvalidInputWarning() --- src/main/c/VierGewinnt.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/c/VierGewinnt.c b/src/main/c/VierGewinnt.c index c4d1419..ee289c8 100644 --- a/src/main/c/VierGewinnt.c +++ b/src/main/c/VierGewinnt.c @@ -49,7 +49,7 @@ int checkDiagonalRL(char board[ROWS][COLS], char player); // Funktionsprototyp für showMessage void showMessage(const char* messageColor, const char* message); //Funktionsprototyp für showInvalidInputMessage -void showInvalidInputMessage(); +void showInvalidInputWarning(); //Funktionsprototyp für showColumnFullMessage void showColumnFullMessage(); @@ -72,7 +72,7 @@ int main_function() { scanf("%d", &column); if (column < 1 || column > 7) { - showInvalidInputMessage(); + showInvalidInputWarning(); continue; } @@ -233,7 +233,7 @@ void showMessage(const char* messageColor, const char* message) { } // Write showInvalidInputMessage function -void showInvalidInputMessage() { +void showInvalidInputWarning() { showMessage(RED, "Ungültige Eingabe. Bitte wähle eine Spalte zwischen 1 und 7.\n"); } From 802e23fa9bc627e49f4fea738cc39896f2cbb0a7 Mon Sep 17 00:00:00 2001 From: fdai7726 Date: Wed, 7 Feb 2024 15:36:35 +0100 Subject: [PATCH 02/10] refactoring: Ausgabetext Anpassen --- src/main/c/VierGewinnt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/VierGewinnt.c b/src/main/c/VierGewinnt.c index ee289c8..f91b268 100644 --- a/src/main/c/VierGewinnt.c +++ b/src/main/c/VierGewinnt.c @@ -242,7 +242,7 @@ void showInvalidInputWarning() { // Write showColumnFullMessage function void showColumnFullMessage() { - showMessage(RED, "Die Spalte ist voll. Bitte wähle eine andere.\n"); + showMessage(RED, "Die ausgewählte Spalte ist bereits belegt. Bitte wähle eine andere Spalte aus.\n"); } From 241aa5116b64d44149dc1d3f1ee9bd24d4052836 Mon Sep 17 00:00:00 2001 From: fdai7726 Date: Wed, 7 Feb 2024 15:41:20 +0100 Subject: [PATCH 03/10] =?UTF-8?q?refactoring:=20Funktionsprototypen=20Anpa?= =?UTF-8?q?ssen=20und=20unn=C3=B6tige=20Kommentare=20l=C3=B6schen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/VierGewinnt.c | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/src/main/c/VierGewinnt.c b/src/main/c/VierGewinnt.c index f91b268..65613cf 100644 --- a/src/main/c/VierGewinnt.c +++ b/src/main/c/VierGewinnt.c @@ -17,44 +17,18 @@ #define CYAN "\033[0;36m" #define WHITE "\033[0;37m" - -//Funktionsprototyp für initializeBoard +//Funktionsprototypen void initializeBoard(char board[ROWS][COLS]); - -//Funktionsprototyp für printBoard void printBoard(char board[ROWS][COLS]); - -// Funktionsprototyp für clearScreen void clearScreen(); - -//Funktionsprototyp für isColumnFull int isColumnFull(char board[ROWS][COLS], int col); - -//Funktionsprototyp für dropPiece int dropPiece(char board[ROWS][COLS], int col, char player); -//Funktionsprototyp für checkWin int checkWin(char board[ROWS][COLS], char player); -// Funktionsprototyp für checkHorizontal int checkHorizontal(char board[ROWS][COLS], char player); - -// Funktionsprototyp für checkVertical int checkVertical(char board[ROWS][COLS], char player); - -// Funktionsprototyp für checkDiagonalLR -int checkDiagonalLR(char board[ROWS][COLS], char player); - -// Funktionsprototyp für checkDiagonalRL int checkDiagonalRL(char board[ROWS][COLS], char player); - -// Funktionsprototyp für showMessage -void showMessage(const char* messageColor, const char* message); -//Funktionsprototyp für showInvalidInputMessage void showInvalidInputWarning(); - -//Funktionsprototyp für showColumnFullMessage void showColumnFullMessage(); - -//Funktionsprototyp für showWinMessage void showWinMessage(int player); From 651527c3bbe9472dc9521e19108853483de185e6 Mon Sep 17 00:00:00 2001 From: fdai7726 Date: Wed, 7 Feb 2024 15:43:33 +0100 Subject: [PATCH 04/10] =?UTF-8?q?refactoring:=20unn=C3=B6tige=20Kommentare?= =?UTF-8?q?=20l=C3=B6schen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/VierGewinnt.c | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/src/main/c/VierGewinnt.c b/src/main/c/VierGewinnt.c index 65613cf..88b2b33 100644 --- a/src/main/c/VierGewinnt.c +++ b/src/main/c/VierGewinnt.c @@ -32,10 +32,9 @@ void showColumnFullMessage(); void showWinMessage(int player); -//Write starter function int main_function() { char board[ROWS][COLS]; - int currentPlayer = 1; // Spieler 1 beginnt + int currentPlayer = 1; initializeBoard(board); printBoard(board); @@ -70,7 +69,6 @@ int main_function() { return 0; } -// Write initializeBoard function void initializeBoard(char board[ROWS][COLS]) { for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { @@ -80,7 +78,6 @@ void initializeBoard(char board[ROWS][COLS]) { } -// Write printBoard function void printBoard(char board[ROWS][COLS]) { clearScreen(); printf("\n"); @@ -99,7 +96,6 @@ void printBoard(char board[ROWS][COLS]) { printf(" 1 2 3 4 5 6 7\n\n"); } -// Write clearScreen function void clearScreen() { #ifdef _WIN32 system("cls"); @@ -108,12 +104,10 @@ void clearScreen() { #endif } -// Write isColumnFull function int isColumnFull(char board[ROWS][COLS], int col) { return (board[0][col] != ' '); } -//Write dropPiece function int dropPiece(char board[ROWS][COLS], int col, char player) { for (int i = ROWS - 1; i >= 0; i--) { if (board[i][col] == ' ') { @@ -122,11 +116,10 @@ int dropPiece(char board[ROWS][COLS], int col, char player) { } } - return 0; // Column is full + return 0; } -// Write checkHorizontal function int checkHorizontal(char board[ROWS][COLS], char player) { for (int row = 0; row < ROWS; row++) { for (int col = 0; col <= COLS - 4; col++) { @@ -134,14 +127,13 @@ int checkHorizontal(char board[ROWS][COLS], char player) { board[row][col + 1] == player && board[row][col + 2] == player && board[row][col + 3] == player) { - return 1; // Gewonnen + return 1; } } } return 0; } -//Write checkVertical function int checkVertical(char board[ROWS][COLS], char player) { for (int col = 0; col < COLS; col++) { for (int row = 0; row <= ROWS - 4; row++) { @@ -149,7 +141,7 @@ int checkVertical(char board[ROWS][COLS], char player) { board[row + 1][col] == player && board[row + 2][col] == player && board[row + 3][col] == player) { - return 1; // Gewonnen + return 1; } } } @@ -158,7 +150,6 @@ int checkVertical(char board[ROWS][COLS], char player) { -// Write checkDiagonalLR function int checkDiagonalLR(char board[ROWS][COLS], char player) { for (int row = 0; row <= ROWS - 4; row++) { for (int col = 0; col <= COLS - 4; col++) { @@ -166,7 +157,7 @@ int checkDiagonalLR(char board[ROWS][COLS], char player) { board[row + 1][col + 1] == player && board[row + 2][col + 2] == player && board[row + 3][col + 3] == player) { - return 1; // Gewonnen + return 1; } } } @@ -176,7 +167,6 @@ int checkDiagonalLR(char board[ROWS][COLS], char player) { -// Write checkDiagonalRL function int checkDiagonalRL(char board[ROWS][COLS], char player) { for (int row = 0; row <= ROWS - 4; row++) { for (int col = 3; col < COLS; col++) { @@ -184,7 +174,7 @@ int checkDiagonalRL(char board[ROWS][COLS], char player) { board[row + 1][col - 1] == player && board[row + 2][col - 2] == player && board[row + 3][col - 3] == player) { - return 1; // Gewonnen + return 1; } } } @@ -192,7 +182,6 @@ int checkDiagonalRL(char board[ROWS][COLS], char player) { } -// Write checkWin function int checkWin(char board[ROWS][COLS], char player) { return checkHorizontal(board, player) || checkVertical(board, player) || @@ -201,12 +190,10 @@ int checkWin(char board[ROWS][COLS], char player) { } -// Write showMessage function void showMessage(const char* messageColor, const char* message) { printf("%s%s"RESET_COLOR, messageColor, message); } -// Write showInvalidInputMessage function void showInvalidInputWarning() { showMessage(RED, "Ungültige Eingabe. Bitte wähle eine Spalte zwischen 1 und 7.\n"); } @@ -214,14 +201,12 @@ void showInvalidInputWarning() { -// Write showColumnFullMessage function void showColumnFullMessage() { showMessage(RED, "Die ausgewählte Spalte ist bereits belegt. Bitte wähle eine andere Spalte aus.\n"); } -// Write showWinMessage function void showWinMessage(int player) { printf("Spieler %d hat gewonnen!\n", player); } From e4024a180d839af04327e00ad6ea77d4d13431c3 Mon Sep 17 00:00:00 2001 From: fdai7726 Date: Wed, 7 Feb 2024 15:47:08 +0100 Subject: [PATCH 05/10] =?UTF-8?q?refactoring:=20=C3=84ndere=20variabel=20c?= =?UTF-8?q?urrentPlayer=20zu=20=20Player?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/VierGewinnt.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/c/VierGewinnt.c b/src/main/c/VierGewinnt.c index 88b2b33..711d018 100644 --- a/src/main/c/VierGewinnt.c +++ b/src/main/c/VierGewinnt.c @@ -34,14 +34,14 @@ void showWinMessage(int player); int main_function() { char board[ROWS][COLS]; - int currentPlayer = 1; + int Player = 1; initializeBoard(board); printBoard(board); int column; while (1) { - printf(YELLOW"Spieler %d, wähle eine Spalte (1-7): "RESET_COLOR, currentPlayer); + printf(YELLOW"Spieler %d, wähle eine Spalte (1-7): "RESET_COLOR, Player); scanf("%d", &column); if (column < 1 || column > 7) { @@ -56,14 +56,14 @@ int main_function() { continue; } - if (dropPiece(board, column, (currentPlayer == 1) ? 'X' : 'O')) { + if (dropPiece(board, column, (Player == 1) ? 'X' : 'O')) { printBoard(board); - if (checkWin(board, (currentPlayer == 1) ? 'X' : 'O')) { - showWinMessage(currentPlayer); + if (checkWin(board, (Player == 1) ? 'X' : 'O')) { + showWinMessage(Player); break; } - currentPlayer = (currentPlayer == 1) ? 2 : 1; + Player = (Player == 1) ? 2 : 1; } } From 382719583bd68c52c438b2a3fd0a25a6a4c684e4 Mon Sep 17 00:00:00 2001 From: fdai7726 Date: Wed, 7 Feb 2024 16:03:50 +0100 Subject: [PATCH 06/10] =?UTF-8?q?refactoring:=20F=C3=BCge=20fdai-Nummer=20?= =?UTF-8?q?als=20Kommentar=20im=20Code=20f=C3=BCr=20Support=20hinzu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/VierGewinnt.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/c/VierGewinnt.c b/src/main/c/VierGewinnt.c index 711d018..a9bfaa0 100644 --- a/src/main/c/VierGewinnt.c +++ b/src/main/c/VierGewinnt.c @@ -1,3 +1,5 @@ +// Author fdai7726 + //Importiere wichtige Bibliotheken #include #include From af94b552d42d531c34c80df69749694aa45a0cd7 Mon Sep 17 00:00:00 2001 From: fdai7726 Date: Wed, 7 Feb 2024 16:10:57 +0100 Subject: [PATCH 07/10] =?UTF-8?q?refactoring:=20Spiel=20Beschreibung=20als?= =?UTF-8?q?=20Kommentar=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/VierGewinnt.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/c/VierGewinnt.c b/src/main/c/VierGewinnt.c index a9bfaa0..e6b84cc 100644 --- a/src/main/c/VierGewinnt.c +++ b/src/main/c/VierGewinnt.c @@ -1,5 +1,17 @@ // Author fdai7726 +/* +*Ein Vier-Gewinnt-Spiel, das in der Kommandozeile gespielt wird. +*Das Programm ermöglicht es zwei Spielern, abwechselnd Steine in eine Spalte zu setzen, +*um eine Reihe von vier Steinen horizontal, +*vertikal oder diagonal zu bilden und das Spiel zu gewinnen. +*Das Spielfeld wird grafisch in der Kommandozeile dargestellt, +*und das Programm überprüft automatisch, +*ob einer der Spieler gewonnen hat oder ob das Spielfeld voll ist. + */ + + + //Importiere wichtige Bibliotheken #include #include From a7cff576b79eebb61a1f8a93eaa9dce62280c352 Mon Sep 17 00:00:00 2001 From: fdai7726 Date: Wed, 7 Feb 2024 16:15:55 +0100 Subject: [PATCH 08/10] =?UTF-8?q?refactoring:=20Gewinner=20Nachrricht=20?= =?UTF-8?q?=C3=A4ndern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/VierGewinnt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/c/VierGewinnt.c b/src/main/c/VierGewinnt.c index e6b84cc..44b22ee 100644 --- a/src/main/c/VierGewinnt.c +++ b/src/main/c/VierGewinnt.c @@ -222,7 +222,8 @@ void showColumnFullMessage() { void showWinMessage(int player) { - printf("Spieler %d hat gewonnen!\n", player); +printf("Spieler %d ist der Gewinner!\n", player); + } From 7a8cd52f0d93e9dfe5d3a9debef99c43debe7070 Mon Sep 17 00:00:00 2001 From: fdai7726 Date: Wed, 7 Feb 2024 16:17:39 +0100 Subject: [PATCH 09/10] refactoring: Funktion showMessage beschreiben --- src/main/c/VierGewinnt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/VierGewinnt.c b/src/main/c/VierGewinnt.c index 44b22ee..a8609ca 100644 --- a/src/main/c/VierGewinnt.c +++ b/src/main/c/VierGewinnt.c @@ -203,7 +203,7 @@ int checkWin(char board[ROWS][COLS], char player) { checkDiagonalRL(board, player); } - +// Die Funktion showMessage gibt eine formatierte Nachricht aus, wobei die Farbe der Nachricht dynamisch festgelegt werden kann. void showMessage(const char* messageColor, const char* message) { printf("%s%s"RESET_COLOR, messageColor, message); } From 3b75ec27be04597cc58e9d1bdaf276f1a1e3534c Mon Sep 17 00:00:00 2001 From: fdai7726 Date: Wed, 7 Feb 2024 16:22:30 +0100 Subject: [PATCH 10/10] refactoring: Beschreibung der Funktion showInvalidInputWarning() --- src/main/c/VierGewinnt.c | 2 ++ src/main/c/a.out | Bin 0 -> 10336 bytes 2 files changed, 2 insertions(+) create mode 100755 src/main/c/a.out diff --git a/src/main/c/VierGewinnt.c b/src/main/c/VierGewinnt.c index a8609ca..2072110 100644 --- a/src/main/c/VierGewinnt.c +++ b/src/main/c/VierGewinnt.c @@ -208,6 +208,8 @@ void showMessage(const char* messageColor, const char* message) { printf("%s%s"RESET_COLOR, messageColor, message); } +//Die Funktion showInvalidInputWarning zeigt eine Warnung für ungültige Benutzereingaben an. Sie ruft die Funktion showMessage auf, um die Nachricht in roter Farbe auszugeben, die den Benutzer darüber informiert, dass die Eingabe ungültig ist und er eine Spalte zwischen 1 und 7 wählen soll. + void showInvalidInputWarning() { showMessage(RED, "Ungültige Eingabe. Bitte wähle eine Spalte zwischen 1 und 7.\n"); } diff --git a/src/main/c/a.out b/src/main/c/a.out new file mode 100755 index 0000000000000000000000000000000000000000..b6a2002109ba2d4eef443ffc2d731c453a0436f7 GIT binary patch literal 10336 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 literal 0 HcmV?d00001