Il s'agit d'un jeu de brise-Haskell implémenté à l'aide de la bibliothèque de programmation réactive fonctionnelle Yampa.

SDL 1.2 Graphiques et son.
Plusieurs périphériques d'entrée (clavier, souris, Wiimote infrarouge, kinect).
Sous-systèmes différenciés pour la physique / collisions, les entrées, le rendu / multimédia, la logique, etc.
Une version de ce jeu utilisant SDL2 a été mise à disposition par Keera Studios gratuitement sur Google Play pour Android. Il y a un bogue qui fait que l'application ne ferme pas ou n'enregistre pas le jeu lorsque vous le sortez. Je sais comment le résoudre, je n'ai tout simplement pas trouvé le temps de pousser ce changement. S'il vous plaît, signalez d'autres bogues de cette application Android ici. Vous pouvez suivre les progrès du port pour Android sur Facebook et Twitter.

Nous aimerions appeler les programmeurs Haskell, les développeurs de jeux et toute personne intéressée par la programmation réactive fonctionnelle et / ou la programmation de jeux pour revoir le code, demander des éclaircissements lorsque le code n'est pas assez clair et nous aider à améliorer le jeu, ainsi que l'état de la programmation FRP / YAMPA également.
Ce jeu a été utilisé pour présenter un tutoriel de programmation de jeu déclaratif au PPDP 14 (voir http://keera.co.uk/blog/2014/09/24/game-programming-videos-code/ pour plus de détails). Les diapositives sont liées à partir de ce site Web.
Le jeu est disponible sur Hackage. Toutes les ressources médiatiques sont incluses avec la distribution (voir Licence pour les conditions de redistribution). Vous pouvez l'installer avec *:
$ cabal update
$ cabal install haskanoid
$ $HOME/.cabal/bin/haskanoid
Si vous souhaitez explorer le code et éventuellement apporter des modifications, procédez comme suit:
$ 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
Pour jouer avec le Wiimote, vous devez exécuter le programme avec les arguments spéciaux + RTS -V0. Voir http://github.com/ivanperez-keera/hcwiid pour une explication.
* Remarques supplémentaires :
Les utilisateurs de GHC 7.8 doivent exécuter des étapes supplémentaires. Voir le numéro 2 pour les instructions.
Les utilisateurs de MacOSX (ou quiconque sans Wiimote) pourrait vouloir désactiver le support Wiimote et Kinect. Vous pouvez le faire avec les drapeaux Cabal wiimote et kinect , en exécutant cabal install --flags="-kinect -wiimote" .
Pour utiliser les instructions d'installation ci-dessus (avec le support Wiimote et Kinect désactivé, voir Bullet Point ci-dessus) Vous avez besoin des packages suivants:
Sur Debian / Ubuntu, vous pouvez les installer avec:
$ 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
Pour activer le support Wiimote et Kinect, vous avez également besoin des packages suivants:
Sur Debian / Ubuntu, vous pouvez les installer respectivement:
$ sudo apt-get install libcwiid-dev
$ sudo apt-get install freenect
Pour essayer de rendre les choses aussi claires que possible, le code comprend une documentation et des commentaires très haddock car nous pourrions raisonnablement s'adapter. Vous pouvez les compiler avec:
$ cabal unpack haskanoid ## Or git clone this-repo
$ cd haskanoid-*
$ cabal install --only-dependencies
$ cabal haddock --haddock-executables --haddock-internal
Vous pouvez également ajouter les drapeaux -f-wiimote et -f-kinect aux commandes Cabal ci-dessus pour installer sans prise en charge Wiimote et Kinect.
Yampa (http://github.com/ivanperez-keera/yampa), l'implémentation de programmation réactive fonctionnelle arroéée créée par Antony Courtney et Henrik Nilsson.
Dunai (http://github.com/ivanperez-keera/dunai), une implémentation de programmation réactive extrêmement puissante capable de faire de la programmation réactive fonctionnelle classique et arroé, de programmation réactive, de programmation de flux et d'autres. Il contient un remplacement Yampa qui est capable d'exécuter du haskanoïde.
hcwiid (http://github.com/ivanperez-keera/hcwiid), un wrapper autour de la bibliothèque CWIID pour communiquer avec Wiimotes.
Freedect (https://hackage.haskell.org/package/freenect), liaisons pour communiquer avec les appareils Kinect.
FRP Collisions (https://github.com/keera-studios/haskell-frp-yampa-physics), un exemple d'introduction de la façon de faire des collisions de sphères à Yampa.
Magic Cookies (https://github.com/keera-studios/magic-cookies), un jeu FRP commercial écrit dans Haskell en utilisant Yampa qui est disponible sur iTunes et Google Play.
Dans le fichier pratique, vous trouvez des idées pour améliorer le haskanoïde tout en vous concentrant sur les zones liées à la programmation (jeu) que vous voudrez peut-être plonger dans plus profondément. Les zones sont: la programmation fonctionnelle (réactive), les performances, l'interaction et l'entrée / la sortie humain-ordinateur et la conception du jeu.
Si vous trouvez ce jeu attrayant et que vous souhaitez l'utiliser pour enseigner la programmation fonctionnelle ou d'autres sujets, nous serions très heureux de le savoir. Nous pouvons fournir du matériel supplémentaire que vous pouvez montrer aux étudiants (vidéos, captures d'écran, etc.).