From 1840ca47728b4406bea04f274c4e9cb35bac536b Mon Sep 17 00:00:00 2001 From: fdai7892 Date: Wed, 7 Feb 2024 14:09:38 +0100 Subject: [PATCH 1/9] =?UTF-8?q?Funktion=20Spiel=20initialisieren=20&=20M?= =?UTF-8?q?=C3=BCnzwurf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/duellist-spielesammlung-projekt.c | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/main/duellist-spielesammlung-projekt.c b/src/main/duellist-spielesammlung-projekt.c index d5b9f76..81a5da3 100644 --- a/src/main/duellist-spielesammlung-projekt.c +++ b/src/main/duellist-spielesammlung-projekt.c @@ -7,6 +7,33 @@ #define zeichen_unbekannt 'x' #define zeichen_mine '@' + +GameResult initializeGame(TicTacToeGame* game) { + // Initialisiere das Spielfeld + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + game->board[i][j] = EMPTY; + } + } + + // Wir setzen den Seed für die Zufallszahlgenerierung basierend auf der aktuellen Zeit + srand(time(NULL)); + + // Münzwurf, um den Startspieler zu bestimmen + game->currentPlayer = (rand() % 2 == 0) ? PLAYER_X : PLAYER_O; + + // Rückgabe des Ergebnisses + return SUCCESS; +} + + + + + + + + + int berechneMinen(int hoehe, int breite) { int anzahl_minen; if (hoehe <= 1 || breite <= 1) { From 67dd1bd67758601c33bd728495768dd8024af028 Mon Sep 17 00:00:00 2001 From: fdai7892 Date: Wed, 7 Feb 2024 15:15:14 +0100 Subject: [PATCH 2/9] Spieler macht ein Zug --- src/main/duellist-spielesammlung-projekt.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/duellist-spielesammlung-projekt.c b/src/main/duellist-spielesammlung-projekt.c index 81a5da3..f3c3149 100644 --- a/src/main/duellist-spielesammlung-projekt.c +++ b/src/main/duellist-spielesammlung-projekt.c @@ -25,7 +25,22 @@ GameResult initializeGame(TicTacToeGame* game) { // Rückgabe des Ergebnisses return SUCCESS; } +GameResult makeMove(TicTacToeGame* game, int row, int col) { + if (row < 0 || row >= 3 || col < 0 || col >= 3 || game->board[row][col] != EMPTY) { + return INVALID_MOVE; + } + + game->board[row][col] = game->currentPlayer; + + GameResult result = checkGameResult(game); + if (result == SUCCESS) { + // Spielerwechsel, wenn der Zug gültig ist und das Spiel noch läuft + game->currentPlayer = (game->currentPlayer == PLAYER_X) ? PLAYER_O : PLAYER_X; + } + + return result; +} From b0f6fe42c53027709214084aaf1b61432bdeb58f Mon Sep 17 00:00:00 2001 From: fdai7892 Date: Wed, 7 Feb 2024 15:23:26 +0100 Subject: [PATCH 3/9] Funktion aktueller Spieler --- src/main/duellist-spielesammlung-projekt.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/duellist-spielesammlung-projekt.c b/src/main/duellist-spielesammlung-projekt.c index f3c3149..baf17b9 100644 --- a/src/main/duellist-spielesammlung-projekt.c +++ b/src/main/duellist-spielesammlung-projekt.c @@ -42,6 +42,9 @@ GameResult makeMove(TicTacToeGame* game, int row, int col) { return result; } +Player getCurrentPlayer(const TicTacToeGame * game) { + return game->currentPlayer; +} From 569d456751e2e9b0b00400587a37e4bb9446d5fa Mon Sep 17 00:00:00 2001 From: fdai7892 Date: Wed, 7 Feb 2024 16:13:19 +0100 Subject: [PATCH 4/9] Funktion Anzahl der Felder --- src/main/duellist-spielesammlung-projekt.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/duellist-spielesammlung-projekt.c b/src/main/duellist-spielesammlung-projekt.c index baf17b9..c36416c 100644 --- a/src/main/duellist-spielesammlung-projekt.c +++ b/src/main/duellist-spielesammlung-projekt.c @@ -46,7 +46,17 @@ Player getCurrentPlayer(const TicTacToeGame * game) { return game->currentPlayer; } - +int getNumberOfMoves(const TicTacToeGame* game) { + int moves = 0; + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + if (game->board[i][j] != EMPTY) { + moves++; + } + } + } + return moves; +} From 835263468894976068e199d20fd9ee82068b8ea9 Mon Sep 17 00:00:00 2001 From: fdai7892 Date: Wed, 7 Feb 2024 16:24:09 +0100 Subject: [PATCH 5/9] =?UTF-8?q?Funktion,=20=C3=9Cberpr=C3=BCfung=20ob=20Fe?= =?UTF-8?q?ld=20voll=20ist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/duellist-spielesammlung-projekt.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/duellist-spielesammlung-projekt.c b/src/main/duellist-spielesammlung-projekt.c index c36416c..0e4eb35 100644 --- a/src/main/duellist-spielesammlung-projekt.c +++ b/src/main/duellist-spielesammlung-projekt.c @@ -58,6 +58,20 @@ int getNumberOfMoves(const TicTacToeGame* game) { return moves; } +int isBoardFull(const TicTacToeGame* game) { + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + if (game->board[i][j] == EMPTY) { + return 0; // Das Spielfeld ist nicht vollständig gefüllt + } + } + } + return 1; // Das Spielfeld ist vollständig gefüllt +} + + + + From e876378d8e98031dec02d86727656f02de966d96 Mon Sep 17 00:00:00 2001 From: fdai7892 Date: Wed, 7 Feb 2024 16:28:48 +0100 Subject: [PATCH 6/9] =?UTF-8?q?Funktion,=20=C3=9Cberpr=C3=BCfung=20ob=20Fe?= =?UTF-8?q?ld=20leer=20ist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/duellist-spielesammlung-projekt.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/duellist-spielesammlung-projekt.c b/src/main/duellist-spielesammlung-projekt.c index 0e4eb35..09119ae 100644 --- a/src/main/duellist-spielesammlung-projekt.c +++ b/src/main/duellist-spielesammlung-projekt.c @@ -69,7 +69,15 @@ int isBoardFull(const TicTacToeGame* game) { return 1; // Das Spielfeld ist vollständig gefüllt } +int isFieldEmpty(const TicTacToeGame* game, int row, int col) { + // Überprüfe, ob die angegebenen Zeilen- und Spaltenindizes innerhalb des Spielfelds liegen + if (row < 0 || row >= 3 || col < 0 || col >= 3) { + return 0; // Ungültige Indizes, das Feld ist nicht leer + } + // Überprüfe, ob das Feld leer ist + return game->board[row][col] == EMPTY; +} From 3791d7b792bb4bac016636dd42382bae21733526 Mon Sep 17 00:00:00 2001 From: fdai7892 Date: Wed, 7 Feb 2024 16:31:36 +0100 Subject: [PATCH 7/9] Funktion Spielergebnis --- src/main/duellist-spielesammlung-projekt.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/duellist-spielesammlung-projekt.c b/src/main/duellist-spielesammlung-projekt.c index 09119ae..af0d29b 100644 --- a/src/main/duellist-spielesammlung-projekt.c +++ b/src/main/duellist-spielesammlung-projekt.c @@ -79,7 +79,15 @@ int isFieldEmpty(const TicTacToeGame* game, int row, int col) { return game->board[row][col] == EMPTY; } - +GameResult checkGameResult(const TicTacToeGame* game) { + // Prüfen, ob ein Sieg oder ein Unentschieden vorliegt und das entsprechende Ergebnis zurückgeben + for (int i = 0; i < 3; ++i) { + //Zeilen und Spalten auf einen Gewinn prüfen + if ((game->board[i][0] == game->board[i][1] && game->board[i][1] == game->board[i][2] && game->board[i][0] != EMPTY) || + (game->board[0][i] == game->board[1][i] && game->board[1][i] == game->board[2][i] && game->board[0][i] != EMPTY)) { + return GAME_WIN; + } + } From 1201c9be361f30adb910f97ea632330c67e96a55 Mon Sep 17 00:00:00 2001 From: fdai7892 Date: Wed, 7 Feb 2024 16:33:30 +0100 Subject: [PATCH 8/9] =?UTF-8?q?Funktion=20=C3=9Cberpr=C3=BCfung=20bei=20Di?= =?UTF-8?q?agonalen=20Sieg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/duellist-spielesammlung-projekt.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/duellist-spielesammlung-projekt.c b/src/main/duellist-spielesammlung-projekt.c index af0d29b..f8f6e5e 100644 --- a/src/main/duellist-spielesammlung-projekt.c +++ b/src/main/duellist-spielesammlung-projekt.c @@ -133,6 +133,16 @@ void verteile_minen(char** mienen, int hoehe, int breite, int anzahl_minen) { } } + // Diagonalen Sieg prüfen + if ((game->board[0][0] == game->board[1][1] && game->board[1][1] == game->board[2][2] && game->board[0][0] != EMPTY) || + (game->board[0][2] == game->board[1][1] && game->board[1][1] == game->board[2][0] && game->board[0][2] != EMPTY)) { + return GAME_WIN; + } + + + + + int minesweeper() { int hoehe, breite; From f87915cd4ebf950e7025dc9064509147bee7b47b Mon Sep 17 00:00:00 2001 From: fdai7892 Date: Wed, 7 Feb 2024 16:34:40 +0100 Subject: [PATCH 9/9] =?UTF-8?q?Funktion=20=C3=9Cberpr=C3=BCfung=20bei=20Un?= =?UTF-8?q?entschieden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/duellist-spielesammlung-projekt.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/duellist-spielesammlung-projekt.c b/src/main/duellist-spielesammlung-projekt.c index f8f6e5e..640e1de 100644 --- a/src/main/duellist-spielesammlung-projekt.c +++ b/src/main/duellist-spielesammlung-projekt.c @@ -89,7 +89,22 @@ GameResult checkGameResult(const TicTacToeGame* game) { } } + // Unentschieden Prüfen + int draw = 1; + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + if (game->board[i][j] == EMPTY) { + draw = 0; + break; + } + } + if (!draw) { + break; + } + } + return draw ? GAME_DRAW : SUCCESS; +} int berechneMinen(int hoehe, int breite) {