Finalized Grid visiualization
Implemented A* Algorithm separatly to reduce clutering in traverse function
This commit is contained in:
47
P1/utils.py
Normal file
47
P1/utils.py
Normal file
@@ -0,0 +1,47 @@
|
||||
def getNode(name, l):
|
||||
return next((i for i in l if i.name == name), -1)
|
||||
|
||||
|
||||
def print_grid_direct(self, path=None):
|
||||
"""
|
||||
Gibt das Grid in der Konsole aus, direkt wie es im Array gespeichert ist.
|
||||
Die y-Achse nimmt nach unten zu (0 ist oben), entsprechend der Array-Struktur.
|
||||
Optionaler Parameter 'path' ist eine Liste von (x,y)-Koordinaten, die den Pfad darstellen.
|
||||
"""
|
||||
# Symbole für verschiedene Zustände
|
||||
symbols = {
|
||||
"free": ".",
|
||||
"obstacale": "#", # Tippfehler aus Original-Code beibehalten
|
||||
"start": "S",
|
||||
"target": "G",
|
||||
"path": "o"
|
||||
}
|
||||
|
||||
# Ausgabe des Grids mit Koordinatenachsen
|
||||
print("\n ", end="")
|
||||
# Obere x-Achsen-Beschriftung
|
||||
for x in range(self.cols):
|
||||
print(f"{x:2d}", end=" ")
|
||||
print("\n " + "-" * (self.cols * 3))
|
||||
|
||||
# Grid mit y-Achsen-Beschriftung
|
||||
for y in range(self.rows):
|
||||
print(f"{y:2d} |", end=" ")
|
||||
for x in range(self.cols):
|
||||
field = self.grid[x][y]
|
||||
if path and (x, y) in path and field.state != "start" and field.state != "target":
|
||||
print(f"{symbols['path']:2s}", end=" ")
|
||||
else:
|
||||
print(f"{symbols[field.state]:2s}", end=" ")
|
||||
print() # Zeilenumbruch
|
||||
|
||||
print("\nLegende:")
|
||||
print(" . = frei")
|
||||
print(" # = Hindernis")
|
||||
print(" S = Start")
|
||||
print(" G = Ziel")
|
||||
print(" o = Pfad")
|
||||
|
||||
# Zusätzliche Statistiken, falls ein Pfad vorhanden ist
|
||||
if path:
|
||||
print(f"Pfadlänge: {len(path)} Felder")
|
||||
Reference in New Issue
Block a user