Este é um jogo Haskell Breakout implementado usando a biblioteca de programação reativa funcional Yampa.

SDL 1.2 gráficos e som.
Vários dispositivos de entrada (teclado, mouse, infravermelho Wiimote, Kinect).
Subsistemas diferenciados para física/colisões, entrada, renderização/multimídia, lógica, etc.
Uma versão deste jogo usando SDL2 foi disponibilizada pelo Keera Studios gratuitamente no Google Play para o Android. Há um bug que faz o aplicativo não fechar ou salvar o jogo quando você o sair. Eu sei como resolvê -lo, simplesmente não encontrei tempo de empurrar essa mudança. Por favor, relate outros bugs desse aplicativo Android aqui. Você pode seguir o progresso do porto para Android no Facebook e Twitter.

Gostaríamos de chamar programadores Haskell, desenvolvedores de jogos e qualquer pessoa interessada em programação reativa funcional e/ou programação de jogos para revisar o código, peça esclarecimentos quando o código não estiver claro e nos ajude a melhorar o jogo e o estado da programação FRP/Yampa também.
Este jogo foi usado para apresentar um tutorial de programação de jogos declarativo no PPDP 14 (consulte http://keera.co.uk/blog/2014/09/24/game-programming-videos-code/ para obter detalhes). Os slides estão vinculados a partir desse site.
O jogo está disponível em hackage. Todos os recursos de mídia estão incluídos na distribuição (consulte a licença para termos de redistribuição). Você pode instalá -lo com*:
$ cabal update
$ cabal install haskanoid
$ $HOME/.cabal/bin/haskanoid
Se você deseja explorar o código e possivelmente fazer alterações, faça o seguinte:
$ 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 tocá -lo com o Wiimote, você precisa executar o programa com os argumentos especiais +RTS -V0. Consulte http://github.com/ivanperez-keera/hcwiid para uma explicação.
* Notas adicionais :
Os usuários do GHC 7.8 precisam executar etapas adicionais. Veja a edição 2 para obter instruções.
Os usuários do Macosx (ou qualquer pessoa sem um Wiimote) podem querer desativar o suporte do Wiimote e do Kinect. Você pode fazê -lo com as bandeiras da CABAL wiimote e kinect , executando cabal install --flags="-kinect -wiimote" .
Para usar as instruções de instalação acima (com suporte de Wiimote e Kinect desativado, consulte o ponto de bala acima), você precisa dos seguintes pacotes:
No Debian/Ubuntu, você pode instalá -los com:
$ 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 ativar o suporte Wiimote e Kinect, você também precisa dos pacotes a seguir:
No Debian/Ubuntu, você pode instalá -los com, respectivamente:
$ sudo apt-get install libcwiid-dev
$ sudo apt-get install freenect
Para tentar deixar as coisas o mais claro possível, o código inclui uma documentação e comentários de aro e comentários que poderíamos se encaixar razoavelmente. Você pode compilar aqueles com:
$ cabal unpack haskanoid ## Or git clone this-repo
$ cd haskanoid-*
$ cabal install --only-dependencies
$ cabal haddock --haddock-executables --haddock-internal
Você também pode adicionar os sinalizadores -f-wiimote e -f-kinect aos comandos da CABAL acima para instalar sem o suporte Wiimote e Kinect.
Yampa (http://github.com/ivanperez-keera/yampa), a implementação de programação reativa funcional seta de seta criada por Antony Courtney e Henrik Nilsson.
Dunai (http://github.com/ivanperez-keera/dunai), uma implementação de programação reativa extremamente poderosa capaz de fazer programação reativa funcional clássica e seta Ele contém uma substituição de Yampa capaz de executar o haskanoid.
hcwiid (http://github.com/ivanperez-keera/hcwiid), um invólucro ao redor da biblioteca CWIID para se comunicar com Wiimotes.
Freenect (https://hackage.haskell.org/package/freenect), ligações para se comunicar com dispositivos Kinect.
Colisões FRP (https://github.com/keera-studios/haskell-frp-yampa-fysics), um exemplo introdutório de como fazer colisões de esfera em Yampa.
Magic Cookies (https://github.com/keera-studios/magic-cookies), um jogo comercial FRP escrito em Haskell usando Yampa disponível no iTunes e no Google Play.
No arquivo prático, você encontra idéias para melhorar o haskanoid e focar em áreas relacionadas à programação (de jogo) que você pode querer mergulhar mais profundamente. As áreas são: programação funcional (reativa), desempenho, interação humano-computador e entrada/saída e design de jogo.
Se você achar esse jogo atraente e gostaria de usá -lo para ensinar programação funcional ou outros assuntos, ficaríamos muito felizes em saber sobre isso. Podemos fornecer material extra que você pode mostrar aos alunos (vídeos, capturas de tela etc.).