Soo ich muss den ganzen Post mal ein kleinwenig in Stücke hacken und abschnittsweise meinen Senf dazu geben^^
BlackJack hat geschrieben:@Brainsucker: Warum ist der `OutputBuilder` ein `Vector`!? Und bei der `ObjectLocation` fehlt wahrscheinlich ein Aufruf der `__init__()`-Methode der Basisklasse. Und die Möglichkeit direkt beim Erzeugen einer `ObjectLocation` auch tatsächlich die Koordinaten angeben zu können.
naja ich habe mir gedacht, dass der Mittelpunkt der Minikarte durch einen Vector bestimmt werden soll. Um diesen Punkt herum dreht und wendet sich dann die Karte. Je nach position und "Blickrichtung" (was aber bisher noch nicht vorhanden ist).
In `addLocation()` fliegt einem ein `NameError` um die Ohren, weil `Group` nirgends definiert ist. Dieser Typtest ist sowieso „unpythonisch”. Wenn sich etwas verhält wie eine `Group` sollte man es auch hinzufügen dürfen wenn es nicht den Typ hat.
Das mit dem NameError kommt davon, wenn man den Namen der Klasse ändert und dieses nicht über das komplette Programm hinweg ebenfalls macht
Bei den beiden äussersten ``for``-Schleifen in `generate()` versuchst Du IMHO mit dem `abs()` Benutzerfehler zu korrigieren.
So ist es.
Würde ich sein lassen. Wenn der Benutzer falsche Werte irgend wo rein füttert, dann sollte er das auch an den Folgen merken, und nicht denken das war schon alles richtig, was ich da gemacht habe.
Ist sicherlich beim fertigen Programm denkbar, zum jetztigen Zeitpunkt sollte ich mich erstmal auf die Hauptsächliche funktion kümmern. Trotzdem danke für jeden Tipp.
Statt für jedes Kästchen jedes Objekt zu untersuchen ob es innerhalb eines Rechtecks liegt, könntest Du Anzeigekoordinaten für die Objekte berechnen und die nach Position (Zeile und innerhalb der Zeilen nach Spalten) sortieren.
Genau das ist der Hauptgrund für dieses Topic. Ich suche hauptsächlich ein paar Tipps, wie man sowas angeht und möglichst intelligent die berechneten Daten "zwischenspeichert" bis diese benötigt werden. Also so Grundspeichermethoden wie z.B. dictionary fallen mir da natürlich gleich als erstes ein. Nun ist allerdings die frage, ob sich das hier tatsächlich empfielt, und in welcher Form die berechneten Koordinaten in der Minikarte am sinnvollsten gespeichert werden.
Ein Beispiel hierzu wäre:
x und y Koordinate bekommen jeweils für jede Location einen separaten Key indem der jeweilige Wert enthalten ist.
oder
Wie schon genannt die Tuplevariante (x, y) in einer Variablen speichern.
Dazu solltest Du übrigens nicht die Zeichenkette per ``+=`` aufbauen, sondern die `join()`-Methode auf Zeichenketten verwenden. Jedes mal wenn man eine Zeichenkette mit ``+``/``+=`` erstellt, muss man damit rechnen, dass die alten Daten unnötig kopiert werden.
Wäre sicherlich ebenfalls denkbar. Müsste ich dazu nicht eine Liste erstellen, inder ich zuerst alle einzelnen Zeichen hinzufüge und dann am ende der Funktion mit .join() zusammensetzen lassen?
Du hast die `addLocation()`-Methode offensichtlich nicht ausprobiert, dann ist Dir natürlich auch entgangen, dass die `generate()`-Methode auch nicht korrekt funktioniert wenn tatsächlich ein Objekt "gezeichnet" wird. Dann wird das `token`-Attribut hinzugefügt, aber trotzdem zusätzlich noch entweder eine Linie oder das Füllzeichen.
Wie bereits im ersten Post erwähnt, ist mir diese Problematik bereits bewusst
Schon öfter davon gehört, aber nie wirklich beachtet, weil ich das einrücken mit Tabs deutlich schneller finde.