Wie ich auf Python einen Wegfinder entwickelt habe

Einleitung in die Welt des Wegfindens

Als Hobbyprogrammierer habe ich mich immer wieder mit kleinen Projekten beschäftigt, die mich herausforderten und gleichzeitig mein Verständnis für die Programmierung vertieften. Eines dieser Projekte war die Entwicklung eines einfachen Wegfinders in Python, der eine Karte aus einer Textdatei liest und den optimalen Pfad zwischen zwei Punkten bestimmt. Der Reiz lag darin, die Herausforderung zu meistern, ohne auf bestehende Algorithmen zurückzugreifen.

Die Grundlagen der Kartenstruktur

Um den Wegfinder zu realisieren, begann alles mit einer einfachen Textdatei, die als Karte dient. Diese .map-Datei enthält Koordinaten und Informationen über die Straßen, die diese verbinden. Die erste Zeile definiert die Größe der Karte, während die nachfolgenden Zeilen die Straßenabschnitte zwischen Punkten beschreiben. Hier ein Beispiel, wie solch eine Datei aufgebaut sein könnte:


5 5
0 0 1 0
1 0 1 1
1 1 2 1

In diesem Beispiel wird eine Karte mit der Größe 5 x 5 definiert. Die darauf folgenden Zeilen beschreiben die Straßen, wobei die Punkte durch ihre Koordinaten angegeben werden.

Der Wegfinder im Detail

Der nächste Schritt war die Entwicklung des eigentlichen Wegfinders. Der Kern des Scripts liest die .map-Datei, erstellt eine Darstellung der Straßen und berechnet die Länge jeder Straße. Die Eingabe erfolgt über den Pfad zur Karte, den Startpunkt und das Ziel. Hier ein vereinfachter Code-Ausschnitt:


def lese_karte(dateipfad): with open(dateipfad, 'r') as datei: zeilen = () # Erste Zeile für Kartengröße kartengroesse = tuple(map(int, zeilen[0].split())) strassen = [] for zeile in zeilen[1:]: punkte = tuple(map(int, ())) ((punkte[:2], punkte[2:])) return kartengroesse, strassen

Dieser Code-Block liest die Karte und speichert die Straßen in einer Liste, wobei jede Straße durch ihre Start- und Endkoordinaten dargestellt wird.

Das Finden des Pfades

Der eigentliche Wegfindeprozess beginnt mit der Berechnung der Luftlinie zwischen Start und Ziel. Dann wird der nächste Anschlusspunkt ausgewählt, basierend auf den kürzesten Straßenverbindungen und der Nähe zum Ziel. Hier ein vereinfachtes Beispiel:


def finde_weg(start, ziel, strassen): aktueller_punkt = start pfad = [start] while aktueller_punkt != ziel: moeglichkeiten = [strasse for strasse in strassen if strasse[0] == aktueller_punkt or strasse[1] == aktueller_punkt] naechster_punkt = min(moeglichkeiten, key=lambda s: berechne_distanz(s, ziel)) aktueller_punkt = naechster_punkt[1] if naechster_punkt[0] == aktueller_punkt else naechster_punkt[0] (aktueller_punkt) return pfad

In diesem Prozess werden die Straßen an Kreuzungen überprüft und der Weg proportional zur Luftlinie zum Ziel optimiert.

Schlussbemerkung

Die Entwicklung dieses einfachen Wegfinders war eine spannende und lehrreiche Erfahrung. Es zeigt, wie man mit grundlegenden Programmierkenntnissen und einer strukturierten Herangehensweise ein Problem lösen kann. Für weitere Informationen und Details zu diesem Projekt, besuchen Sie bitte meine Projektseite auf corecosmetic.de.