Я работаю над программой Haskell для игры в пространственные игры: у меня есть график группы людей, играющих дилемму заключенных, но только с их ближайшими соседями и копированием стратегий людей, которые делают лучше всего.
Я достиг точки, где мне нужно нарисовать образ мира, и именно здесь я столкнулся с проблемами. Две из возможных геометрий легки: если у людей есть четыре или восемь соседей каждый, я представляю каждый в виде заполненного квадрата (с цветом, соответствующим стратегии), и разбиваем плоскость с ними. Однако у меня также есть ситуация, когда люди имеют шесть соседей (шестиугольников) или трех соседей (треугольники).
Итак, мой вопрос: какая хорошая библиотека Haskell для создания образов и рисования фигур на них?. Я бы предпочел, чтобы он создавал PNG, но я не невероятно придирчив. Первоначально я использовал Graphics.GD, но он только экспортирует привязки к функциям для рисования точек, линий, дуг, эллипсов и невращающихся прямоугольников, что недостаточно для моих целей (если я не хочу рисовать шестиугольники по пикселям *). Я просмотрел с помощью foreign import
, но это доказывает немного хлопот (отчасти потому, что для функции рисования многоугольника требуется массив структур gdPoint
), и учитывая, что мои требования могут расти, было бы неплохо использовать -Haskell, и не нужно гадать с FFI (хотя, если толчок наступает, я готов это сделать). Любые предложения?
* Это тоже вариант, на самом деле; любые советы о том, как это сделать, также будут оценены, хотя я думаю, что библиотека будет проще.
РЕДАКТИРОВАТЬ: Спасибо вам большое за ваши предложения. К сожалению, мне не удалось собрать все необходимые библиотеки gtk2hs, что исключало множество решений. По целому ряду причин, после того как я попробовал все ваши ответы, не удалось установить несколько библиотек и обнаружил, что другие не могут делать то, что я хотел, я решил просто экспортировать больше FFI для libgd и использовал это вместо.