2024-12-16 23:20:04 +01:00
|
|
|
//
|
|
|
|
// Created by moonleay on 12/16/24.
|
|
|
|
//
|
|
|
|
|
|
|
|
#include "Maze.h"
|
|
|
|
|
|
|
|
#ifndef MAZEPARSER_H
|
|
|
|
#define MAZEPARSER_H
|
|
|
|
|
2024-12-16 23:44:01 +01:00
|
|
|
/* Legende
|
|
|
|
* S - Spieler
|
|
|
|
* Z - Ziel
|
|
|
|
* . - Leerer Raum (begehbar)
|
|
|
|
* # - Wand
|
|
|
|
* A - Geist
|
|
|
|
* K - Schlüssel
|
|
|
|
* T - Tür
|
|
|
|
*/
|
2024-12-16 23:21:24 +01:00
|
|
|
namespace game
|
|
|
|
{
|
2024-12-16 23:44:01 +01:00
|
|
|
/// Erlaubte Zeichen in einem Labyrinth
|
|
|
|
/// Ist eine Konstante, darf also in global scope
|
|
|
|
static const vector<char> valid_maze_elements = {'Z', '.', '#', 'A', 'K', 'T'};
|
|
|
|
|
2024-12-16 23:21:24 +01:00
|
|
|
class MazeParser
|
|
|
|
{
|
|
|
|
private:
|
2024-12-16 23:44:01 +01:00
|
|
|
|
2024-12-16 23:21:24 +01:00
|
|
|
/// Lese eine bestimmte Anzahl an Nummern aus der Konsole
|
|
|
|
/// @param amount_of_numbers Wie viele Nummern eingelesen werden sollen
|
|
|
|
/// @return Die eingelesenen Nummern
|
|
|
|
static vector<int> request_numbers_from_user(int amount_of_numbers);
|
|
|
|
|
2024-12-16 23:44:01 +01:00
|
|
|
/// Kontrolliere, ob ein Zeichen im Labyrinth vorkommen darf
|
|
|
|
/// @param target Das Zeichen, welches Kontrolliert werden soll
|
|
|
|
/// @return Ob das gegebene Zeichen in einem Labyrinth vorkommen darf
|
|
|
|
static bool is_valid_maze_element(char target);
|
|
|
|
|
2024-12-16 23:21:24 +01:00
|
|
|
public:
|
|
|
|
/// Lese ein Labyrinth aus der Konsole
|
|
|
|
/// @return Das Labyrinth
|
|
|
|
/// @throws runtime_exception Falls die Eingabe nicht korrekt verlaufen ist.
|
|
|
|
static Maze request_maze_from_user();
|
|
|
|
};
|
2024-12-16 23:20:04 +01:00
|
|
|
} // game
|
|
|
|
|
|
|
|
#endif //MAZEPARSER_H
|