将精灵包含到二进制文件-光泽库

时间:2019-03-06 15:11:55

标签: haskell gloss

我正在尝试在Haskell中制作一个飞扬的小鸟游戏,我想知道是否有一种方法可以将.bmp文件“编译”为二进制文件?因此,我只能共享可执行文件,不需要带有精灵的文件夹。

我正在使用gloss-1.13.0.1并将bmp加载为

bg0Pic = unsafePerformIO . loadBMP $ "bg0.bmp"

我知道unsafePerformIO并不是很好的做法,但这还不是我所关心的。我是否应该使用其他方法,以便编译器知道我需要该图像,还是没有办法做到这一点?

可以在GitHub上找到整个代码

2 个答案:

答案 0 :(得分:3)

一种方法是将数据文件与阴谋结合使用。

这个想法是,您要添加所有要与应用程序捆绑在一起的数据文件(文本,图像,子画面,其他二进制文件),并在运行时访问.cabal文件中的Data-Files标头下。

这将使cabal为您生成一个Paths模块,您可以在需要它的任何模块中访问它。

可以找到更多信息here

答案 1 :(得分:2)

您可以使用文件嵌入包,该文件包使用Template Haskell嵌入文件。

https://www.stackage.org/package/file-embed