Haskell 2D绘图库

42

我想创建一个全屏窗口,并在其上以不同颜色和大小绘制文本(并更新屏幕)。我已经在Python中使用了pygame来实现此目的,现在我正在寻找类似的库(应该很容易使用)。

+1 如果它也可以处理输入...


1
那么,经过将近两年的时间,你选择了哪个库?你做了什么有用的东西?使用2D Haskell的总体体验如何? - CoR
2
@CoR:我使用了Hackage上的SDL和SDL-ttf包,体验非常棒:我成功地实现了自己想要的功能,并且速度比我预期的快得多!此外,现在我写的代码量也少了很多,但是实现的效果却相同。 - akosch
谢谢。我也要做同样的2D事情,所以知道SDL在现实世界中运行良好是很好的 :) - CoR
@CoR:没问题,我想补充一下,我只在Linux上使用过它。 - akosch
是的,这就是区别 :) 将SDL移植到Windows的人做了与简单易行相反的事情。找到了3个关于在Windows上安装SDL的教程。但似乎没有一个能够正常工作。听起来很有前途,不是吗? ;) - CoR
显示剩余2条评论
4个回答

69

我将对Hackage上的图形部分列出的所有库进行快速概述,而不是挑选个别库。

基本框架:

OpenGL

GTK

cabal install cairo

QTHaskell

  • 使用相对较少,但当它被使用时,它是显著的。
  • 不在Hackage上,可以在这里找到,由于C++问题
  • 知名用户:Nikki and the Robots,一个商业游戏。

SDL

cabal install sdl

X11

cabal install X11

受人尊敬的Unix用户界面。

示例:xmonad

GD

cabal install gd

GD图形系统。Hackage上的包

示例:词云, 火花线图

HOgre

cabal install hogre

这是与Ogre游戏图形系统相关的绑定。

除了这些游戏层之外,还有许多更高级别的框架和工具:

图表

cabal install diagrams

使用cairo制作的2D向量图表(例如用于数学)。

术语解释

cabal install gloss

2D图形,非常简单易用的界面,相对较新。请参见TomMD的评论。

Cal3D

cabal install cal3d

这是与 Cal3D 动画包 相关的绑定。

黑板

cabal install chalkboard

基于OpenGL的组合器,用于生成图像并在教学中使用。

TeaHS

cabal install TeaHS

这是一个简单的库,用于创建2D游戏,受到Ruby库Tea的启发。


我总是忘记Chalkboard已经更新了以进行编译/运行(它一度出现故障)。Gill等人做得很好,感谢提醒。 - Thomas M. DuBuisson
很棒的清单!术语和图表看起来特别有趣,也与我想要制作的内容相关。 - Nek

21
如果您正在寻找一种专业的游戏库,您可以在这里找到多种选择。然而,在这些库中,FunGEn可能是您最好的选择。但是,您的问题似乎表明,如果您只是想绘制文本并接收输入,那么游戏库可能有点过头了。在这种情况下,您可能会选择像HOpenGLhsSDL这样更简单的东西。还有其他几个库列在这里
编辑:经过进一步研究,您可能会使用haskgame。我自己从未使用过它,但看起来它有一些函数这里正好可以满足您的需求。

16

我建议使用新的 Gloss库 来轻松实现良好的结果。

利用一个不错的数据类型和一些显示功能,Gloss隐藏了绘制简单向量图形的困难。 Gloss在幕后使用OpenGL和GLUT,但您无需担心任何这些问题。10分钟内将酷炫的东西呈现在屏幕上。

还有一些不错的例子,比如:

hello world

enter image description here

以及一个漂亮的示例,用于构建群集模拟器

或者,如果您想处理向量和文本,则可使用位于cairo之上的diagrams软件包来获得非常好的结果。


7
Gloss在教育领域中使用很容易,但对于其他用途来说功能不够完整。我用Gloss制作了一个简单的绘图应用程序,并发现其中一些bug(例如文本位置翻译错误,在XMonad中无法正确调整窗口大小,在Gnome环境下渲染时CPU使用率高达100%,等等),以及无法显示和翻译图片(如PNG、JPG格式)。最后一个问题已经得到部分解决,现在可以显示位图。总之,我认为Gloss非常好用,但它需要几天时间来修复和改进库本身。 - Thomas M. DuBuisson
这个东西很简单,可以用来可视化一个简单的地牢游戏吗?最重要的是无bug位图绘制(我将使用瓦片)。 - Nek

3
你可以使用Qt。这就是跨平台的Nikki And The Robots使用的工具。你可以查看他们的源代码,看看他们在做什么。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接