これは、機能的なリアクティブプログラミングライブラリYampaを使用して実装されたHaskellブレイクアウトゲームです。

SDL 1.2グラフィックとサウンド。
複数の入力デバイス(キーボード、マウス、wiimote赤外線、kinect)。
物理/衝突、入力、レンダリング/マルチメディア、ロジックなどのための区別化されたサブシステム。
SDL2を使用したこのゲームのバージョンは、Keera StudiosがAndroidのGoogle Playで無料で利用できるようになりました。アプリを終了したり、ゲームを終了すると保存しないようにするバグがあります。私はそれを解決する方法を知っています、私はちょうどその変化を推進する時間を見つけていません。このAndroidアプリの他のバグをこちらで報告してください。 FacebookとTwitterでAndroidのポートの進行状況をたどることができます。

Haskellプログラマー、ゲーム開発者、および機能的なリアクティブプログラミングやゲームプログラミングに関心のある人には、コードをレビューし、コードが十分に明確でない場合に説明を求め、ゲームの改善とFRP/Yampaプログラミングの状態をお願いします。
このゲームは、詳細については、ppdp 14で宣言的なゲームプログラミングチュートリアルを提示するために使用されました(http://keera.co.uk/blog/2014/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サポートを使用して、上記の箇条書きを参照)を使用するには、次のパッケージが必要です。
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
可能な限り明確にしようとするために、コードには、合理的に適合できる限り、多くのHaddockドキュメントとコメントが含まれています。あなたはそれらを次のようにコンパイルすることができます:
$ cabal unpack haskanoid ## Or git clone this-repo
$ cd haskanoid-*
$ cabal install --only-dependencies
$ cabal haddock --haddock-executables --haddock-internal
また、WiimoteおよびKinectサポートなしでインストールするために、上記のCabalコマンドにフラグ-f-wiimoteを追加し、 -f-kinect追加することもできます。
Yampa(http://github.com/ivanperez-keera/yampa)、アントニーコートニーとヘンリックニルソンによって作成された矢印化された機能的リアクティブプログラミングの実装。
Dunai(http://github.com/ivanperez-keera/dunai)、クラシックおよび矢印の機能的なリアクティブプログラミング、リアクティブプログラミング、ストリームプログラミングなどを行うことができる非常に強力なリアクティブプログラミングの実装。ハスカノイドを実行できるヤンパの交換が含まれています。
hcwiid(http://github.com/ivanperez-keera/hcwiid)、wiimotesと通信するためにCWIIDライブラリ周辺のラッパー。
Freenect(https://hackage.haskell.org/package/freenect)、Kinectデバイスと通信するバインディング。
FRP衝突(https://github.com/keera-studios/haskell-frp-yampa-physics)、yampaで球体衝突を行う方法の紹介例。
マジッククッキー(https://github.com/keera-studios/magic-cookies)、iTunesとGoogle Playで利用可能なYampaを使用してHaskellで書かれた商用FRPゲーム。
ハンズオンファイルには、(ゲーム)プログラミング関連領域に焦点を当てながら、より深く潜りたいと思うかもしれないハスカノイドを改善するためのアイデアを見つけます。領域は、機能的(反応性)プログラミング、パフォーマンス、人間コンピューターの相互作用と入力/出力、およびゲームデザインです。
このゲームが魅力的で、それを使用して機能的なプログラミングや他の科目を教えることを望むなら、私たちはそれについて非常に喜んでいるでしょう。学生に表示できる追加の資料(ビデオ、スクリーンショットなど)を提供できます。