Este es un juego de Breakout de Haskell implementado utilizando la biblioteca de programación reactiva funcional Yampa.

SDL 1.2 Gráficos y sonido.
Múltiples dispositivos de entrada (teclado, mouse, wiimote infrarrojo, kinect).
Subsistemas diferenciados para física/colisiones, entrada, representación/multimedia, lógica, etc.
Keera Studios ha puesto a disposición una versión de este juego utilizando SDL2 de forma gratuita en Google Play para Android. Hay un error que hace que la aplicación no esté cerca o guarde el juego cuando lo salgas. Sé cómo resolverlo, simplemente no he encontrado el tiempo para impulsar ese cambio. Por favor, informe otros errores de esa aplicación de Android aquí. Puede seguir el progreso del puerto para Android en Facebook y Twitter.

Nos gustaría llamar a los programadores de Haskell, los desarrolladores de juegos y cualquier persona interesada en la programación reactiva funcional y/o la programación de juegos para revisar el código, solicitar una aclaración cuándo el código no está lo suficientemente claro y ayudarnos a mejorar el juego, y el estado de la programación FRP/Yampa también.
Este juego se utilizó para presentar un tutorial de programación de juegos declarativos en PPDP 14 (ver http://keera.co.uk/blog/2014/09/24/game-programming-videos-code/ para más detalles). Las diapositivas están vinculadas desde ese sitio web.
El juego está disponible en Hackage. Todos los recursos de los medios se incluyen con la distribución (ver Licencia para términos de redistribución). Puede instalarlo con*:
$ cabal update
$ cabal install haskanoid
$ $HOME/.cabal/bin/haskanoid
Si desea explorar el código y posiblemente realizar cambios, haga lo siguiente:
$ 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
Para jugar con el Wiimote, debe ejecutar el programa con los argumentos especiales +RTS -V0. Consulte http://github.com/ivanperez-keera/hcwiid para una explicación.
* Notas adicionales :
Los usuarios de GHC 7.8 deben ejecutar pasos adicionales. Consulte el número 2 para obtener instrucciones.
Los usuarios de MacOSX (o cualquier persona sin wiimote) pueden querer deshabilitar el soporte de Wiimote y Kinect. Puede hacerlo con las banderas de Cabal wiimote y kinect , ejecutando cabal install --flags="-kinect -wiimote" .
Para el uso de las instrucciones de instalación anteriores (con soporte de Wiimote y Kinect discapacitado, vea el punto de bala anterior) necesita los siguientes paquetes:
En Debian/Ubuntu, puede instalarlos con:
$ 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
Para habilitar el soporte de Wiimote y Kinect, también necesita los siguientes paquetes:
En Debian/Ubuntu, puede instalarlos con, respectivamente:
$ sudo apt-get install libcwiid-dev
$ sudo apt-get install freenect
Para tratar de dejar las cosas lo más claras posible, el código incluye una documentación y comentarios de gran egray, como podríamos encajar razonablemente. Puedes compilarlos con:
$ cabal unpack haskanoid ## Or git clone this-repo
$ cd haskanoid-*
$ cabal install --only-dependencies
$ cabal haddock --haddock-executables --haddock-internal
También es posible que desee agregar las banderas -f-wiimote y -f-kinect a los comandos de Cabal anteriores para instalar sin soporte de Wiimote y Kinect.
Yampa (http://github.com/ivanperez-keera/yampa), la implementación de programación reactiva funcional flotada creada por Antony Courtney y Henrik Nilsson.
Dunai (http://github.com/ivanperez-keera/dunai), una implementación de programación reactiva extremadamente potente capaz de hacer programación reactiva funcional clásica y flechada, programación reactiva, programación de transmisión y otros. Contiene un reemplazo de Yampa que es capaz de ejecutar Haskanoid.
hcwiid (http://github.com/ivanperez-keera/hcwiid), un envoltorio alrededor de la biblioteca CWIID para comunicarse con wiimotes.
Freenect (https://hackage.haskell.org/package/freenect), enlaces para comunicarse con dispositivos Kinect.
FRP colisiones (https://github.com/keera-studios/haskell-frp-yampa-physics), un ejemplo introductorio de cómo hacer colisiones de esfera en Yampa.
Magic Cookies (https://github.com/keera-studios/magic-cookies), un juego comercial de FRP escrito en Haskell usando Yampa que está disponible en iTunes y Google Play.
En el archivo práctico, encuentra ideas para mejorar Haskanoid mientras se centra en las áreas relacionadas con la programación (del juego) en las que es posible que desee sumergirse en más profundo. Las áreas son: programación funcional (reactiva), rendimiento, interacción y entrada/salida de computadora humana, y diseño de juegos.
Si encuentras este juego atractivo y te gustaría usarlo para enseñar programación funcional u otras materias, estaríamos muy contentos de saberlo. Podemos proporcionar material adicional que puede mostrar a los estudiantes (videos, capturas de pantalla, etc.).