Die Grafik, die angezeigt wird ist in einem Linienformat mit fliesskommadarstellung der Stützpunkte gespeichert.

Für das Einarbeiten der internen Züge in die Grafik und für das Umwandeln der benutzer-gezeichneten Züge in die interne Darstellung benutze ich eine Gitterdarstellung.

Vor jedem Zug wird die Lininegrafik in das Gitter gemalt, dann darin der neue Zug ausgeführt und dann die neue Linie wieder in die Lininendarstellung übertragen und noch etwas geglättet. Die alten Linien aus der Liniendarstellung bleiben erhalten.

In der Gitterdarstellung kann jeder Punkt mit 8 Nachbarn verbunden werden (also auch diagonal). Es werden darin dan auch bits fuer besetzte Diagonalverbindungen gespeichert, sonst könnten sich auch Linien überschneiden, die keine gemeinsamen Gitterunkte haben.

Umsetzen von internen Zügen in die Grafik:
Bei Punkten mit bereits 2 Verbindungen muss eine passende Abgangsstelle am Punkt gewählt werden, damit die neue Linie auf der gewünschen Seite zwischen den bereits vorhandenen Linien abzweigt.
Wenn durch die neue Verbindung eine Fläche zerteilt wird, müssen später die unabhängigen Netzte in dieser Fläche in der richigen Teilfläche liegen. Das erreiche ich, indem ich vorher Hilfslinien male, die der Hauptline den Weg so versperren, dass sie nur noch in geeigneter Weise um die Netze herumlaufen kann.
5 Fälle werden unterschieden:
Je nach Fall ist das Verfahren zum zeichnen der Hilfslinien etwas unterschiedlich. im ersten Fall brauchen keine Hilfslinen gezeichnet werden, die Hauptlinine kann einfach den günstigsten Weg wählen.

Im Fall 4 etwa verbinde ich Alle Netzte die in der neuen Fläche liegen sollen mit dem Pfadstück das zwischen A->B liegt; die anderen mit dem Aussenrand, und das Pfadstück B->A auch mit dem Aussrenrand. Dann erst wird der Weg fuer die Hauptlinine ermittelt, und dann die Hilflinien wieder gelöscht. Aussenrand ist entweder der umschliessende Pfad der Verbindungsfläche oder, wenn es die Aussenfläche ist, der Spielfeldrand.

Der "günstigsten Weg" ist immer einer , der noch möglichst viel Platz zwischen allen linien/punkten lässt. Ich berechne zu beginn für jeden Gitterpunkt der minimalen Abstand zu einm Besetzten Punkt, und in der Wegfindungsfunktion werden aus dies Werten die Kosten für einen möglichen Weg berechnet

Wenn der Zug auf dem Gitterbrett nicht ausgeführt werden kann, wiel es zu eng ist, dann wird das Gitter vergrössert. Spiele mit 8 Startpunkten lassen sich oft auf einem Gitter mit 100x100 punkten durchspielen, wenn die Grafik zwischen den Zügen immer aufgeräumt wird, d.h. die Linien so verzogen werden, dass sie möglichst viel Platz lassen. Ohne diese Aufräumen würdes es oft schon früh so eng werden , das auf dem Bildschirm kaum noch etwas zu erkennen ist.

Umsetzen des Benutzergemalten Zugs in die interne Darstellung
hier müssen , wenn die Punkte bereits 2 Verbindungen haben, die passenden kantenindices aus der Abgangsrichtung ermittelt werden.
Ich teste ausser im Fall 1(der oberen Liste) ob die neuen Linie recht oder Links herum dreht (bei selbstverbindung, oder in kombination mit bisheriger Verbindung von A und B), um im internen Zug A und B in der richtign Reihenfolge einzusetzen. Fuer die Teilnetze in der Fläche erfolgt dann ein Punkt in Fläche Test um zu ermitteln in welcher Teilfläche sie gehören.

Das Aufraumen erfolgt in der linienbasierten Darstellung