45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
//
|
|
// Created by moonleay on 12/13/24.
|
|
//
|
|
|
|
#include "Maze.h"
|
|
|
|
namespace game
|
|
{
|
|
Maze::Maze()
|
|
{
|
|
|
|
}
|
|
|
|
bool Maze::is_player_at_goal(const PositionVector pos) const
|
|
{
|
|
return this->field[pos.y][pos.x] == 'Z';
|
|
}
|
|
|
|
bool Maze::is_pos_free(const PositionVector pos) const
|
|
{
|
|
if (pos.x < 0 || pos.y < 0 || pos.y > field.size() - 1 || pos.x > field[pos.y].size() - 1)
|
|
return false; // Zielposition ist außerhalb des Spielfelds
|
|
if (field[pos.y][pos.x] == '#')
|
|
return false; // Zielposition ist eine Wand
|
|
return true; // Zielposition ist betretbar (ist keine Wand und auch nicht außerhalb des Spielfeldes)
|
|
}
|
|
|
|
void Maze::render(const PositionVector pos) const
|
|
{
|
|
for (int y = 0; y < field.size(); ++y)
|
|
{
|
|
// Für jede Reihe ...
|
|
for (int x = 0; x < field[y].size(); ++x)
|
|
{
|
|
// ... schreibe für jedes Element ...
|
|
if (y == pos.y && x == pos.x)
|
|
cout << "S"; // ... 'S' wenn der aktuelle Eintrag die Position des Spielers ist
|
|
else // sonst
|
|
cout << field[y][x]; // ... den tatsächlichen Eintrag
|
|
cout << " "; // Füge ein Leerzeichen zwischen den Einträgen hinzu
|
|
}
|
|
cout << "\n"; // Beende die Reihe mit einem Zeilenumbruch
|
|
}
|
|
}
|
|
} // game
|