#include "MazeParser.h" #include "Maze.h" #include "Exceptions/ExitGame.h" #include "Exceptions/MalformedMaze.h" using game_exceptions::MalformedMaze; using game_exceptions::ExitGame; namespace game { vector MazeParser::request_numbers_from_user(const int& amount_of_numbers) { int input; vector list; for (int i = 0; i < amount_of_numbers; ++i) { cin >> input; if (!cin) throw MalformedMaze("Cin failed while reading numbers!"); list.push_back(input); } return list; } bool MazeParser::validate_maze_element(const char& target) { for (const char c : valid_maze_elements) if (c == target) return true; return false; } Maze MazeParser::request_maze_from_user() { vector maze_size = request_numbers_from_user(2); char input; vector> field; for (int y = 0; y < maze_size[0]; ++y) { vector row; for (int x = 0; x < maze_size[1]; ++x) { cin >> input; if (!cin) throw MalformedMaze("Cin failed while reading chars!"); if (input == 'q') throw ExitGame("Schoenen Tag noch!"); if (!validate_maze_element(input)) throw MalformedMaze("The given input is not a valid element of a maze!"); row.push_back(input); } field.push_back(row); } vector player_start_pos = request_numbers_from_user(2); return Maze(field, player_start_pos); } // Beispieleingabe: `4 3 #.# #.K #T# #Z# 0 1` } // game