Это игра Haskell Breakout, реализованная с использованием функциональной библиотеки программного программирования Yampa.

SDL 1.2 Графика и звук.
Несколько входных устройств (клавиатура, мышь, Wiimote Infrared, Kinect).
Дифференцированные подсистемы для физики/столкновений, ввода, рендеринга/мультимедиа, логики и т. Д.
Версия этой игры с использованием SDL2 была доступна Keera Studios бесплатно в Google Play для Android. Существует ошибка, которая делает приложение не закрывать и не сохранять игру, когда вы ее выходите. Я знаю, как это решить, я просто не нашел времени, чтобы продвинуть это изменение. Пожалуйста, сообщите о других ошибках этого приложения Android здесь. Вы можете следить за ходом порта для Android на Facebook и Twitter.

Мы хотели бы вызвать программистов Haskell, разработчиков игр и любого, кто интересуется функциональным реактивным программированием и/или игровым программированием, чтобы просмотреть код, попросить разъяснения, когда код не достаточно ясен, и помогать нам улучшить игру, а также состояние программирования FRP/Yampa.
Эта игра была использована для представления декларативного учебника по программированию игры на PPDP 14 (см. Http://keera.co.uk/blog/2014/09/24/game-programming-videos-code/ для деталей). Слайды связаны с этого сайта.
Игра доступна на Hackage. Все ресурсы медиа включены в распределение (см. Лицензию на условия перераспределения). Вы можете установить его с*:
$ 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 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
Чтобы попытаться прояснить вещи как можно более четкими, код включает в себя много документации на пикше и комментарии, которые мы могли бы разумно подходить. Вы можете скомпилировать их с:
$ cabal unpack haskanoid ## Or git clone this-repo
$ cd haskanoid-*
$ cabal install --only-dependencies
$ cabal haddock --haddock-executables --haddock-internal
Вы также можете добавить флаги -f-wiimote и -f-kinect в команды Cabal, выше, чтобы установить без поддержки Wiimote и Kinect.
Yampa (http://github.com/ivanperez-keera/yampa), реагирование на функциональное реагирующее программирование, созданное Энтони Кортни и Хенрик Нильссон.
Dunai (http://github.com/ivanperez-keera/dunai), чрезвычайно мощная реагирующая реагирующая реализация программирования, способная выполнять классическое и стреляющее функциональное реактивное программирование, реактивное программирование, программирование потока и другие. Он содержит замену Yampa, способную работать с хасканоидом.
hcwiid (http://github.com/ivanperez-keera/hcwiid), обертка вокруг библиотеки Cwiid для общения с Wiimotes.
Freenect (https://hackage.haskell.org/package/freenect), привязки для связи с устройствами Kinect.
Collises FRP (https://github.com/keera-studios/haskell-frp-yampa-physics), вступительный пример того, как выполнять столкновения сфер в Ямпе.
Волшебные печенья (https://github.com/keera-studios/magic-cookies), коммерческая игра FRP, написанная в Haskell с использованием Yampa, которая доступна в iTunes и Google Play.
В практическом файле вы находите идеи для улучшения хаканоида, сосредоточившись на (игровых) областях, связанных с программированием, которые вы можете погрузиться в глубже. Области: функциональное (реактивное) программирование, производительность, взаимодействие человека и компьютер и вход/выход, а также дизайн игры.
Если вы найдете эту игру привлекательной и хотите использовать ее для обучения функциональному программированию или другим предметам, мы были бы очень рады узнать об этом. Мы можем предоставить дополнительный материал, который вы можете показать студентам (видео, скриншоты и т. Д.).