这是使用功能性反应性编程库Yampa实现的Haskell突破游戏。

SDL 1.2图形和声音。
多个输入设备(键盘,鼠标,Wiimote红外,Kinect)。
用于物理/碰撞,输入,渲染/多媒体,逻辑等的分化子系统。
Keera Studios在Google Play for Android上免费提供了使用SDL2的游戏版本。有一个错误使应用程序退出时不会关闭或保存游戏。我知道如何解决它,我只是没有时间推动这种变化。请在此处报告该Android应用程序的其他错误。您可以在Facebook和Twitter上关注Android端口的进度。

我们想呼吁Haskell程序员,游戏开发人员以及对功能性反应性编程和/或游戏编程感兴趣的任何人,以查看代码,何时何时不够清晰,并帮助我们改善游戏以及FRP/YAMPA编程的状态。
该游戏用于在PPDP 14上介绍声明性游戏编程教程(请参阅http://keera.co.uk/blog/2014/09/09/24/game-programming-videos-code/)。幻灯片是从该网站链接的。
该游戏可在骇客上使用。所有媒体资源都包含在分发中(请参阅重新分配条款的许可证)。您可以使用*:
$ cabal update
$ cabal install haskanoid
$ $HOME/.cabal/bin/haskanoid
如果您想探索代码并可能进行更改,请执行以下操作:
$ cabal update
$ cabal unpack haskanoid # or git clone http://github.com/ivanperez-keera/haskanoid
$ cd haskanoid-* # Game resources are here
$ cabal install
$ $HOME/.cabal/bin/haskanoid
要使用Wiimote播放它,您需要使用特殊参数 +RTS -V0运行程序。有关解释,请参见http://github.com/ivanperez-keera/hcwiid。
*附加说明:
GHC 7.8的用户需要运行其他步骤。有关说明,请参见第2期。
MACOSX用户(或没有Wiimote的任何人)可能希望禁用Wiimote和Kinect支持。您可以使用Cabal Flags wiimote和kinect进行操作,通过运行cabal install --flags="-kinect -wiimote" 。
要使用上述安装说明(使用禁用的Wiimote和Kinect支持,请参见上面的Bullet Point),您需要以下软件包:
在Debian/Ubuntu上,您可以安装它们:
$ sudo apt-get install ghc cabal-install
$ sudo apt-get install libsdl1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libsdl-ttf2.0-dev
为了启用Wiimote和Kinect支持,您还需要以下包:
在Debian/Ubuntu上,您可以分别安装它们:
$ sudo apt-get install libcwiid-dev
$ sudo apt-get install freenect
为了使事情尽可能清楚,该代码包含了我们可以合理地适合的黑迪克文档和评论。您可以将其编译为:
$ cabal unpack haskanoid ## Or git clone this-repo
$ cd haskanoid-*
$ cabal install --only-dependencies
$ cabal haddock --haddock-executables --haddock-internal
您可能还需要在上面的Cabal命令中添加标志-f-wiimote和-f-kinect ,以安装而无需Wiimote和Kinect支持。
Yampa(http://github.com/ivanperez-keera/yampa),由安东尼·考特尼(Antony Courtney)和亨里克·尼尔森(Henrik Nilsson)创建的箭头功能反应性编程实施。
Dunai(http://github.com/ivanperez-keera/dunai),这是一种功能强大的反应性编程实现,能够执行经典和箭头的功能性反应性编程,反应性编程,流编程等。它包含一个能够运行haskanoid的Yampa替代品。
HCWIID(http://github.com/ivanperez-keera/hcwiid),围绕CWIID库的包装器与Wiimotes进行交流。
FreEnect(https://hackage.haskell.org/package/freenect),绑定以与Kinect设备通信。
FRP碰撞(https://github.com/keera-studios/haskell-frp-yampa-physics),一个介绍性的示例,说明了如何在Yampa进行球体碰撞。
Magic Cookies(https://github.com/keera-studios/magic-cookies),这是一种使用iTunes和Google Play上可用的Haskell编写的商业FRP游戏。
在动手文件中,您可以找到可以改善Haskanoid的想法,同时专注于(游戏)编程相关领域,您可能想深入研究。这些区域是:功能性(反应性)编程,性能,人为计算机交互,输入/输出以及游戏设计。
如果您觉得这款游戏很有吸引力,并且想使用它来教授功能性编程或其他主题,那么我们很高兴知道它。我们可以提供您可以向学生展示的额外材料(视频,屏幕截图等)。