Ich arbeite an einem Haskell-Programm zum Spielen von räumlichen Spielen: Ich habe eine Grafik von einer Reihe von "Individuen", die das Gefangenendilemma spielen, aber nur mit ihren unmittelbaren Nachbarn und kopieren die Strategien der Leute, die es am besten können.Bildzeichnungsbibliothek für Haskell?
Ich habe einen Punkt erreicht, wo ich ein Bild von der Welt zeichnen muss, und hier habe ich Probleme bekommen. Zwei der möglichen Geometrien sind einfach: Wenn Menschen jeweils vier oder acht Nachbarn haben, dann repräsentiere ich jede als gefülltes Quadrat (mit der Strategie entsprechenden Farbe) und kachle die Ebene mit diesen. Ich habe jedoch auch eine Situation, in der Menschen sechs Nachbarn (Sechsecke) oder drei Nachbarn (Dreiecke) haben.
Meine Frage ist dann: Was ist eine gute Haskell-Bibliothek zum Erstellen von Bildern und Zeichnen von Formen auf ihnen? Ich würde es vorziehen, dass es PNGs erstellen, aber ich bin nicht unglaublich wählerisch. Ursprünglich verwendete ich Graphics.GD, aber es exportiert nur Bindungen an Funktionen zum Zeichnen von Punkten, Linien, Bögen, Ellipsen und nicht gedrehten Rechtecken, was für meine Zwecke nicht ausreicht (es sei denn, ich möchte Hexagone Pixel für Pixel * zeichnen). Ich habe mich mit foreign import
beschäftigt, aber es erweist sich als etwas mühsam (teilweise, weil die Polygon-Zeichnung-Funktion ein Array von gdPoint
Strukturen erfordert), und da meine Anforderungen wachsen können, wäre es nett, eine In-Haskell-Lösung zu verwenden Ich muss nicht mit dem FFI herumalbern (wenn es aber hart auf hart kommt, bin ich dazu bereit). Irgendwelche Vorschläge?
* Das ist auch eine Option, eigentlich; Irgendwelche Tipps, wie man das macht, würden auch geschätzt werden, obwohl ich denke, dass eine Bibliothek einfacher wäre.
EDIT: Vielen Dank für Ihre Anregungen. Leider konnte ich nicht alle benötigten Bibliotheken von gtk2hs erstellen, was viele Lösungen ausschloss. Aus verschiedenen Gründen, nachdem ich alle deine Antworten ausprobiert habe, eine Reihe von Bibliotheken nicht installiert habe und festgestellt habe, dass andere nicht tun können, was ich wollte, entschied ich mich, einfach mehr von einem FFI für libgd zu exportieren und stattdessen zu verwenden.
möglich Duplikat [Haskell-Bibliothek für 2D-Zeichnung] (http://stackoverflow.com/questions/5612201/haskell-library-for-2d-drawing) –