/* * spielfeld.h * * Created on: Mar 5, 2024 * Author: nicon */ #ifndef INC_SPIELFELD_H_ #define INC_SPIELFELD_H_ /* * Enthaltene Dateien: * main.h: Enthält die Deklarationen und Definitionen, die vom Hauptprogramm und den Modulen gemeinsam genutzt werden. * uart.h: Enthält die Deklarationen für Funktionen zur Steuerung der UART-Schnittstelle. * stdio.h: Enthält Prototypen für Standard-Ein-/Ausgabefunktionen. * stdlib.h: Enthält Prototypen für Speicherverwaltungsfunktionen. * time.h: Enthält Prototypen für Zeitfunktionen. * ctype.h: Enthält Prototypen für Zeichentest- und -manipulationsfunktionen. * * Externe Variablen: * huart2: Eine externe Variable vom Typ UART_HandleTypeDef, die von der HAL-Bibliothek bereitgestellt wird. Sie repräsentiert die Handle-Struktur für die UART-Schnittstelle 2. * hrng: Eine externe Variable vom Typ RNG_HandleTypeDef, die von der HAL-Bibliothek bereitgestellt wird. Sie repräsentiert die Handle-Struktur für den Random Number Generator. * * Struktur: * Position: Eine Struktur zur Darstellung der Zeilen- und Spaltenindizes einer Zelle im Spielfeld. * * Makros: * EMPTY_CELL: Ein Makro zur Darstellung einer leeren Zelle im Spielfeld. * BOMB_CELL: Ein Makro zur Darstellung einer Zelle mit einer Bombe im Spielfeld. * HIDDEN_CELL: Ein Makro zur Darstellung einer verdeckten Zelle im Spielfeld. * NUMBER_CELL: Ein Makro zur Darstellung einer Zelle mit einer Zahl, die angibt, wie viele Bomben in der Nähe sind. * FLAG_CELL: Ein Makro zur Darstellung einer Zelle mit einer Flagge, die auf eine vermutete Bombe hinweist. */ #include "main.h" #include "uart.h" #include #include #include #include extern UART_HandleTypeDef huart2; extern RNG_HandleTypeDef hrng; typedef struct { int row; int col; } Position; #define EMPTY_CELL 0 #define BOMB_CELL -1 #define HIDDEN_CELL -2 #define NUMBER_CELL -3 #define FLAG_CELL -4 int** generateGameBoard(int size); void placeBombs(int** gameBoard, int size, int numBombs); void displayGameBoardUART(int** gameBoard, int size, int numBombs, int numFlags); void freeGameBoard(int** gameBoard, int size); int** createHiddenGameBoard(int** gameBoard, int size); int revealCell(int** gameBoard, int** hiddenGameBoard, int size, int row, int col); void getPositionIndices(int row, int col, Position* pos); void getNewPosition(Position* pos, int dx, int dy, Position* newPos); void setFlag(int** hiddenGameBoard, int row, int col, int* numFlags); int checkWin(int** gameBoard, int** hiddenGameBoard, int size, int numBombs, int numFlags); void handleBombExploded(); #endif /* INC_SPIELFELD_H_ */