2024-12-14 17:32:06 +01:00
|
|
|
//
|
|
|
|
// Created by moonleay on 12/13/24.
|
|
|
|
//
|
|
|
|
#include "std_lib_inc.h"
|
|
|
|
#include "PositionVector.h"
|
|
|
|
|
|
|
|
#ifndef MAZE_H
|
|
|
|
#define MAZE_H
|
|
|
|
|
|
|
|
namespace game
|
|
|
|
{
|
2024-12-16 23:20:04 +01:00
|
|
|
class Player; // Forward declaration
|
|
|
|
/// Ein Labyrinth.
|
|
|
|
/// Besitzt ein Feld
|
2024-12-14 17:32:06 +01:00
|
|
|
class Maze
|
2024-12-16 23:20:04 +01:00
|
|
|
{
|
|
|
|
// class -> members private by default
|
|
|
|
private:
|
2024-12-14 17:32:06 +01:00
|
|
|
/// Das Spielfeld
|
2024-12-16 23:20:04 +01:00
|
|
|
vector<vector<char>> field;
|
|
|
|
/// Die Startposition des Spielers
|
|
|
|
vector<int> player_start_position;
|
2024-12-14 17:32:06 +01:00
|
|
|
|
|
|
|
public:
|
|
|
|
/// Das Spielfeld
|
2024-12-16 23:20:04 +01:00
|
|
|
Maze(vector<vector<char>> play_field, vector<int> 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;
|
2024-12-14 17:32:06 +01:00
|
|
|
|
|
|
|
/// Kontrolliere, ob der Spieler am Ziel ist
|
|
|
|
/// @param pos Die Position des Spielers
|
|
|
|
/// @return Ob der Spieler am Ziel ist
|
2024-12-16 23:20:04 +01:00
|
|
|
bool is_player_at_goal(Player player) const;
|
2024-12-14 17:32:06 +01:00
|
|
|
|
|
|
|
/// Kontrolliere, ob eine bestimmte Position begehbar ist
|
|
|
|
/// @param pos Die Position, die überprüft werden soll
|
2024-12-16 23:20:04 +01:00
|
|
|
/// @param player_has_key If the player has at least one key
|
2024-12-14 17:32:06 +01:00
|
|
|
/// @return Ob die Position begehbar ist
|
2024-12-16 23:20:04 +01:00
|
|
|
bool is_pos_free(PositionVector pos, bool player_has_key) const;
|
2024-12-14 17:32:06 +01:00
|
|
|
|
|
|
|
/// Zeige das Spielfeld in der Konsole an
|
|
|
|
/// @param pos Die Position des Spielers
|
2024-12-16 23:20:04 +01:00
|
|
|
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<int> get_player_start_position();
|
2024-12-14 17:32:06 +01:00
|
|
|
};
|
|
|
|
} // game
|
|
|
|
|
|
|
|
#endif //MAZE_H
|