diff --git a/Minesweeper/Core/Src/spielfeld.c b/Minesweeper/Core/Src/spielfeld.c index b700804..4dd45d0 100644 --- a/Minesweeper/Core/Src/spielfeld.c +++ b/Minesweeper/Core/Src/spielfeld.c @@ -205,6 +205,17 @@ void getNewPosition(Position* pos, int dx, int dy, Position* newPos) { newPos->row = pos->row + dx; } + +/* + * Beschreibung: + * Diese Funktion deckt rekursiv alle leeren Zellen und ihre benachbarten leeren Zellen auf. + * + * Parameter: + * gameBoard: Das Spielfeld, auf dem die Operation ausgeführt wird. + * hiddenGameBoard: Das verdeckte Spielfeld, das aktualisiert wird. + * size: Die Größe des Spielfelds. + * pos: Die Position der aktuellen Zelle, die aufgedeckt wird. + */ void revealEmptyCells(int** gameBoard, int** hiddenGameBoard, int size, Position pos) { // Aufdecken der leeren Zelle hiddenGameBoard[pos.row][pos.col] = gameBoard[pos.row][pos.col]; @@ -227,7 +238,21 @@ void revealEmptyCells(int** gameBoard, int** hiddenGameBoard, int size, Position } } } - +/* + * Beschreibung: + * Diese Funktion deckt eine bestimmte Zelle auf dem Spielfeld auf und aktualisiert das verdeckte Spielfeld entsprechend. + * + * Parameter: + * gameBoard: Das Spielfeld, auf dem die Operation ausgeführt wird. + * hiddenGameBoard: Das verdeckte Spielfeld, das aktualisiert wird. + * size: Die Größe des Spielfelds. + * row: Die Zeilennummer der aufzudeckenden Zelle. + * col: Die Spaltennummer der aufzudeckenden Zelle. + * + * Rückgabewert: + * 1, wenn die Zelle erfolgreich aufgedeckt wurde. + * 0, wenn die Zelle eine Bombe war und das Spiel dadurch verloren wurde. + */ int revealCell(int** gameBoard, int** hiddenGameBoard, int size, int row, int col) { Position pos; pos.row = row; @@ -266,6 +291,16 @@ int revealCell(int** gameBoard, int** hiddenGameBoard, int size, int row, int co return 1; } +/* + * Beschreibung: + * Diese Funktion platziert oder entfernt eine Flagge auf einer bestimmten Zelle des verdeckten Spielfelds. + * + * Parameter: + * hiddenGameBoard: Das verdeckte Spielfeld, auf dem die Operation ausgeführt wird. + * row: Die Zeilennummer der Zelle, auf der die Flagge platziert/entfernt werden soll. + * col: Die Spaltennummer der Zelle, auf der die Flagge platziert/entfernt werden soll. + * numFlags: Ein Zeiger auf die Anzahl der Flaggen auf dem Spielfeld. + */ void setFlag(int** hiddenGameBoard, int row, int col, int* numFlags) { if (hiddenGameBoard[row][col] == FLAG_CELL) { @@ -279,6 +314,21 @@ void setFlag(int** hiddenGameBoard, int row, int col, int* numFlags) { } } +/* + * Beschreibung: + * Diese Funktion überprüft, ob das Spiel gewonnen wurde, indem sie prüft, ob alle Bomben markiert wurden und alle nicht-Bomben-Zellen aufgedeckt sind. + * + * Parameter: + * gameBoard: Das Spielfeld mit den Bomben. + * hiddenGameBoard: Das verdeckte Spielfeld. + * size: Die Größe des Spielfelds. + * numBombs: Die Anzahl der Bomben auf dem Spielfeld. + * numFlags: Die Anzahl der Flaggen auf dem Spielfeld. + * + * Rückgabewert: + * 1, wenn das Spiel gewonnen wurde. + * 0, wenn das Spiel noch nicht gewonnen wurde. + */ int checkWin(int** gameBoard, int** hiddenGameBoard, int size, int numBombs, int numFlags) { // Überprüfen, ob alle Bombenpositionen mit einer Flagge markiert wurden for (int i = 0; i < size; i++) { @@ -308,6 +358,10 @@ int checkWin(int** gameBoard, int** hiddenGameBoard, int size, int numBombs, int } } +/* + * Beschreibung: + * Diese Funktion gibt eine Meldung aus, dass das Spiel verloren wurde, da eine Bombe explodiert ist. * + */ void handleBombExploded() { char message[] = "Spiel Verloren! Du hast eine Bombe getroffen!\r\nStarte neu mit der ON Taste. \r\n"; HAL_UART_Transmit(&huart2, (uint8_t*)message, sizeof(message), 100);