這是使用功能性反應性編程庫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的想法,同時專注於(遊戲)編程相關領域,您可能想深入研究。這些區域是:功能性(反應性)編程,性能,人為計算機交互,輸入/輸出以及遊戲設計。
如果您覺得這款遊戲很有吸引力,並且想使用它來教授功能性編程或其他主題,那麼我們很高興知道它。我們可以提供您可以向學生展示的額外材料(視頻,屏幕截圖等)。