chore: translated comments to German

This commit is contained in:
moonleay 2024-12-07 18:33:06 +01:00
parent c063fe626b
commit e2b6e8ae59
Signed by: moonleay
GPG key ID: 82667543CCD715FB

View file

@ -1,71 +1,73 @@
#include "std_lib_inc.h" #include "std_lib_inc.h"
// A program which allows you to wander across a maze using 'w','a','s' and 'd'. // Ein Programm, welches dir erlaubt ein Labyrinth zu erkunden mit 'w', 'a', 's', und 'd'.
// kMaze[y][x]
const vector<vector<char>> kMaze = { const vector<vector<char>> kMaze = {
// kMaze[y][x]
{'#', '.', '.', '.', '.'}, {'#', '.', '.', '.', '.'},
{'#', '.', '#', '.', '.'}, {'#', '.', '#', '.', '.'},
{'.', 'Z', '#', '.', '.'}, {'.', 'Z', '#', '.', '.'},
{'.', '#', '#', '#', '.'}, {'.', '#', '#', '#', '.'},
{'.', '.', '.', '.', '.'} {'.', '.', '.', '.', '.'}
// ^ player starts here (4,0) // ^ Spieler startet hier (4,0)
}; };
const vector<int> kPlayerStartPosition = {4,0}; /* Legende
* S - Spieler
/* legend * Z - Ziel
* S - player * . - Leerer Raum (begehbar)
* Z - goal * # - Wand
* . - empty space
* # - wall
*/ */
/// Use inputs to move the player. Don't move the player, if move is illegal
/// @param player_pos The current player position const vector<int> kPlayerStartPosition = {4, 0};
/// @param move_vector The requested move vector
/// @return The new position of the player /// Bewege den Splieler um den Bewegungsvector, falls die Ziel position begehbar ist
/// @param player_pos Die aktuelle Position des Spielers
/// @param move_vector Die gewollte Bewegung
/// @return Die neue Position des Spielers
vector<int> move_player(vector<int> player_pos, vector<int> move_vector); vector<int> move_player(vector<int> player_pos, vector<int> move_vector);
/// Check if a certain space can be moved to /// Kontrolliere, ob eine bestimmte Position begehbar ist
/// @param target The position to check /// @param target Die Position, die kontrolliert werden soll
/// @return If the position can be moved to /// @return Ob die Position begehbar ist
bool is_pos_free(vector<int> target); bool is_pos_free(vector<int> target);
/// Check if a certain space can be moved to /// Zeige das Spielfeld in der Konsole an
/// @param player_pos The current player position /// @param player_pos Die aktuelle Position des Spielers
void render_play_field(vector<int> player_pos); void render_play_field(vector<int> player_pos);
int main() int main()
{ {
// Create player position formatted as (y, x) // Erstelle die Spielerposition als Vector, formattiert als (y, x)
vector<int> player_pos = kPlayerStartPosition; vector<int> player_pos = kPlayerStartPosition;
// Create input variable // Erstelle eine Variable für den Input
char input; char input;
// Run the game loop // Durchlaufe die Hauptschleife des Spiels
while (true) while (true)
{ {
// Render the play field // Zeige dem Spieler das Spielfeld
render_play_field(player_pos); render_play_field(player_pos);
// Check if the goal has been reached yet // Kontrolliere, ob der Spieler schon das Ziel erreicht hat
if (kMaze[player_pos[0]][player_pos[1]] == 'Z') if (kMaze[player_pos[0]][player_pos[1]] == 'Z')
{ {
// Goal reached! Let's celebrate! // Ziel erreicht! Herzlichen Glückwunsch!
cout << "Ziel erreicht! Herzlichen Glueckwunsch!\n"; cout << "Ziel erreicht! Herzlichen Glueckwunsch!\n";
break; break;
} }
// Get input // Lese Eingabe des Spielers
cin >> input; cin >> input;
// Create an empty vector to store the requested movement in // Erstelle einen Vector mit einer Bewegung von 0 und 0
vector<int> target_movement_vector = {0, 0}; vector<int> target_movement_vector = {0, 0};
// Check what the player wants to do. Store the requested movement in the vector // Kontrolliere, was der Spieler machen möchte. Speichere die erforderte Bewegung im Bewegungsvektor.
// print messages to screen if help was requested or an unknown input was entered // Schreibe nachrichten in die Konsole,
// wenn nach Hilfe gefragt wird oder eine unbekannte Eingabe eingegeben wurde
switch (input) switch (input)
{ {
case 'w': case 'w':
@ -81,28 +83,28 @@ int main()
target_movement_vector = {0, 1}; target_movement_vector = {0, 1};
break; break;
case 'h': case 'h':
// Print help text to console // Schreibe hilfsreiche Tipps in die Konsole
cout << "Gebe 'w', 'a', 's', oder 'd' ein zum bewegen. Gebe 'h' ein um diesen Text anzuzeigen.\n"; cout << "Gebe 'w', 'a', 's', oder 'd' ein zum bewegen. Gebe 'h' ein um diesen Text anzuzeigen.\n";
break; break;
default: default:
// Target action not recognized. Print 'error' message to screen // 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"; cout << "Diese Eingabe kenne ich nicht. Gib 'h' ein, um eine Hilfe zu erhalten.\n";
break; break;
} }
// Check & apply the requested movement // Kontrolliere gewollte Bewegung und setze sie um.
player_pos = move_player(player_pos, target_movement_vector); player_pos = move_player(player_pos, target_movement_vector);
} }
// End the program // Beende das Programm
return 0; return 0;
} }
vector<int> move_player(vector<int> player_pos, vector<int> move_vector) vector<int> move_player(vector<int> player_pos, vector<int> move_vector)
{ {
// Calculate the position the player wants to move to // Berrechne die Position, zu die der Spieler sich bewegen möchte
const vector<int> target_position = { player_pos[0] + move_vector[0], player_pos[1] + move_vector[1] }; const vector<int> target_position = { player_pos[0] + move_vector[0], player_pos[1] + move_vector[1] };
// Move player to requested position in case position is free // Bewege den Spieler zu der gewollten Position, wenn diese frei ist
if (is_pos_free(target_position)) if (is_pos_free(target_position))
{ {
player_pos[0] += move_vector[0]; player_pos[0] += move_vector[0];
@ -111,33 +113,31 @@ vector<int> move_player(vector<int> player_pos, vector<int> move_vector)
else else
cout << "Bewegung nicht moeglich!\n"; cout << "Bewegung nicht moeglich!\n";
// Return the player position // Gebe die Spielerposition zurück
return player_pos; return player_pos;
} }
bool is_pos_free(vector<int> target) bool is_pos_free(vector<int> target)
{ {
if (target[1] < 0 || target[0] < 0 || target[1] > kMaze.size() - 1 || target[0] > kMaze[target[1]].size() - 1) if (target[1] < 0 || target[0] < 0 || target[1] > kMaze.size() - 1 || target[0] > kMaze[target[1]].size() - 1)
return false; // Target pos out of bounds of area return false; // Zielposition ist außerhalb des Spielfelds
if (kMaze[target[0]][target[1]] == '#') if (kMaze[target[0]][target[1]] == '#')
return false; // Target pos is a wall return false; // Zielposition ist eine Wand
return true; // Target pos is movable to (is not wall and not out of bounds) return true; // Zielposition ist betretbar (ist keine Wand und auch nicht außerhalb des Spielfeldes)
} }
void render_play_field(const vector<int> player_pos) void render_play_field(const vector<int> player_pos)
{ {
for (int i = 0; i < kMaze.size(); ++i) for (int i = 0; i < kMaze.size(); ++i)
{ { // Für jede Reihe ...
// For every row...
for (int j = 0; j < kMaze[i].size(); ++j) for (int j = 0; j < kMaze[i].size(); ++j)
{ { // ... schreibe für jedes Element ...
// ... render ...
if (i == player_pos[0] && j == player_pos[1]) if (i == player_pos[0] && j == player_pos[1])
cout << "S"; // ... 'S' if it is the entry where the player is currently cout << "S"; // ... 'S' wenn der aktuelle Eintrag die Position des Spielers ist
else else // sonst
cout << kMaze[i][j]; // ... the actual entry of the field cout << kMaze[i][j]; // ... den tatsächlichen Eintrag
cout << " "; // Add space between entries cout << " "; // Füge ein Leerzeichen zwischen den Einträgen hinzu
} }
cout << "\n"; // Finish the row by ending the actively drawn line cout << "\n"; // Beende die Reihe mit einem Zeilenumbruch
} }
} }