#include "Maze.h" #include "std_lib_inc.h" #include "Player.h" #include "PositionVector.h" #include "MazeParser.h" using game::Player; using game::PositionVector; using game::Maze; using game::MazeParser; // Ein Programm, welches dir erlaubt ein Labyrinth zu erkunden mit 'w', 'a', 's', und 'd'. const vector player_start_position = {4, 0}; int main() { // Erstelle eine Variable, in der wir das eingelesene Labyrinth speichern Maze maze; try { // Lese das Labyrinth ein maze = MazeParser::request_maze_from_user(); } catch (...) { // Das Labyrinth einlesen hat nicht geklappt. Gebe Fehlermeldung aus und beende das Programm. cout << "Fehler beim Einlesen des Labyrinths.\n"; return 0; } // Lese die Startpositon des Spielers aus dem eingelesenen Labyrinth aus vector player_start_position = maze.get_player_start_position(); // Erstelle einen Spieler mit der gegebenen start position Player player = Player(player_start_position[1], player_start_position[0]); // Erstelle eine Variable für den Input char game_input; // Durchlaufe die Hauptschleife des Spiels while (true) { // Zeige dem Spieler das Spielfeld maze.render(player); if (maze.was_player_killed_by_ghost(player)) { cout << "Sie haben einen Geist getroffen! Game Over!\n"; break; } // Kontrolliere, ob der Spieler schon das Ziel erreicht hat if (maze.is_player_at_goal(player)) { // Ziel erreicht! Herzlichen Glückwunsch! cout << "Ziel erreicht! Herzlichen Glueckwunsch!\n"; break; } // Lese Eingabe des Spielers cin >> game_input; // Erstelle einen Vector mit einer Bewegung von 0 und 0 PositionVector movement_vector = PositionVector(0, 0); // Kontrolliere, was der Spieler machen möchte. Speichere die erforderte Bewegung im Bewegungsvektor. // Schreibe nachrichten in die Konsole, // wenn nach Hilfe gefragt wird oder eine unbekannte Eingabe eingegeben wurde switch (game_input) { case 'w': movement_vector.update(0, -1); break; case 'a': movement_vector.update(-1, 0); break; case 's': movement_vector.update(0, 1); break; case 'd': movement_vector.update(1, 0); break; case 'h': // Schreibe hilfsreiche Tipps in die Konsole cout << "Du wurdest von einem Zauberer in eine Labyrinth gesperrt, nachdem du seine Künste beleidigt hast.\n" << "Er laesst dich leben, wenn du es schaffst den Ausgang (Z) zu finden. Solltest du keinen erfolg haben, laesst er dich verhungern.\n" << "Auf deinem Abenteuer wirst du dabei boesen Geistern (A) begegnen und mit Schluesseln (K) Tueren (T) aufschliessen.\n" << "Bewege dich mit 'w', 'a', 's' und 'd'.\n"; break; default: // Die gewollte Aktion kenne ich nicht. Schreibe eine Fehlernachricht in die Konsole cout << "Diese Eingabe kenne ich nicht. Gib 'h' ein, um eine Hilfe zu erhalten.\n"; break; } // Kontrolliere gewollte Bewegung und setze sie um. try { maze = player.move(maze, movement_vector); } catch (runtime_error& err) { // Diese Bewegung ist nicht möglich! // Gebe aus, warum. cout << err.what() << "\n"; } } // Beende das Programm return 0; }