Diagrammvisualisierung: Brettspiel Scotland Yard

Ich möchte ein Brett für Scotland Yard drucken, ein graphenbasiertes Brettspiel mit 200 Knoten und vielen Kanten (jede Kante kann 3 verschiedene Farben haben). Das Brett sieht so aus:

Geben Sie hier die Bildbeschreibung ein

Wenn ich für dieses Spiel programmgesteuert ein Brett zeichnen möchte, benötige ich die folgenden Funktionen:

  • Farben, Knoten sollten mehrere Farben haben können (z. B. orangefarbener Kreis innerhalb eines blaugrünen Rechtecks)
  • Fähigkeit, Kanten und Knoten sehr fett / dick zu machen
  • Geht gut mit Unordnung um (vielleicht könnte ich über einen Parameter einstellen, wie weit die Knoten im Rendering verteilt sind)
  • Bibliothek in C, C++, Python oder Java
  • Kostenlos wie im Bier

Alle Anzeichen deuten darauf hin, dass Graphviz die beliebteste derartige Bibliothek ist. Meine Fragen an jemanden, der Graphviz verwendet hat, lauten:

  1. Unterstützt graphviz die von mir gewünschten Funktionen?
  2. Welche Programmiersprache hat die am einfachsten zu verwendenden graphviz-Bibliotheken?
  3. Welche anderen Bibliotheken zum Zeichnen von Grafiken erfüllen diese Anforderungen?
Die einzige Anforderung, die in graphviz schwierig zu erfüllen ist, ist eine, die Sie nicht erwähnen - Kanten sollten den nicht unbedingt geraden Straßenmarkierungen auf dem zugrunde liegenden Straßenkartenbild folgen - es sei denn, Sie generieren dies auch programmgesteuert.
Richtig, ich bin bereit, auf diese Anforderung zu verzichten, wenn ich die anderen Sachen zum Laufen bringen kann. Es könnte optisch weniger verwirrend sein (wenn auch nicht so hübsch), wenn die Busse und die U-Bahn nicht denselben Straßen folgen wie die Taxis.
Hast du jemals eine Lösung gefunden?
@mawg Es stellt sich heraus, dass es zu viele Knoten und Kanten für Graphviz gibt, um es anmutig zu handhaben (dh es sieht schlecht aus), aber es hat einige interessante Dinge darüber enthüllt, welche Bereiche mehr Konnektivität haben als andere ...
Habe hier mit etwas Code herumgespielt: bitbucket.org/turbulencetoo/stomp-the-yard/src/master
Wie können wir dieses Spiel spielen?

Antworten (1)

Ich habe etwas Ähnliches in Java mit einer HashMap geschrieben, wobei der Schlüssel im Wesentlichen ein Ort und der Wert eine ArrayList von Orten ist, sodass eine Art Diagrammstruktur entsteht. Wahrscheinlich nicht die effizienteste Art, Dinge zu tun, aber funktioniert trotzig, wenn versucht wird, eine schnelle und einfache Verwendung zu ermöglichen

Ok, aber um Ihre Software nutzbar zu machen, müssten Sie einen Link darauf bereitstellen.