// // Created by moonleay on 12/13/24. // #include "std_lib_inc.h" #include "PositionVector.h" #ifndef MAZE_H #define MAZE_H namespace game { class Player; // Forward declaration /// Ein Labyrinth. /// Besitzt ein Feld class Maze { // class -> members private by default private: /// Das Spielfeld vector> field; /// Die Startposition des Spielers vector player_start_position; public: /// Das Spielfeld Maze(vector> play_field, vector player_start_position); /// Kontrolliere, ob der Spieler stirbt /// @param player Der Spieler /// @return Ob der Spieler tot ist bool was_player_killed_by_ghost(Player player) const; /// Kontrolliere, ob der Spieler am Ziel ist /// @param pos Die Position des Spielers /// @return Ob der Spieler am Ziel ist bool is_player_at_goal(Player player) const; /// Kontrolliere, ob eine bestimmte Position begehbar ist /// @param pos Die Position, die überprüft werden soll /// @param player_has_key If the player has at least one key /// @return Ob die Position begehbar ist bool is_pos_free(PositionVector pos, bool player_has_key) const; /// Zeige das Spielfeld in der Konsole an /// @param pos Die Position des Spielers void render(Player player) const; /// Kriege den Wert einer Position /// @param pos Die gewollte Position /// @return Der Wert der Position char get_field(PositionVector pos) const; /// Ersetze den Wert von einer Position /// @param target_pos Die Position die ersetzt werden soll /// @param target Der Wert, auf den die Position gesetzt werden soll void update_field(PositionVector pos, char target); /// Kriege die Startposition des Spielers /// @return Die Startposition des Spielers vector get_player_start_position(); }; } // game #endif //MAZE_H