Dies ist ein Haskell -Breakout -Spiel, das mit der funktionalen reaktiven Programmierbibliothek Yampa implementiert wird.

SDL 1.2 Grafik und Sound.
Mehrere Eingangsgeräte (Tastatur, Maus, Wiimote -Infrarot, Kinect).
Differenzierte Subsysteme für Physik/Kollisionen, Eingaben, Rendering/Multimedia, Logik usw.
Eine Version dieses Spiels mit SDL2 wurde von Keera Studios kostenlos bei Google Play für Android zur Verfügung gestellt. Es gibt einen Fehler, der die App nicht schließt oder das Spiel speichert, wenn Sie es beenden. Ich weiß, wie man es löst, ich habe einfach nicht die Zeit gefunden, diese Veränderung voranzutreiben. Bitte melden Sie hier andere Fehler dieser Android -App. Sie können den Fortschritt des Ports für Android auf Facebook und Twitter verfolgen.

Wir möchten Haskell -Programmierer, Spieleentwickler und jeden, der Interesse an funktionaler reaktiven Programmierungen und/oder Spielprogramme hat, anrufen, um den Code zu überprüfen, um Klärung zu bitten, wenn der Code nicht klar genug ist, und uns dabei helfen, das Spiel und den Zustand der FRP/Yampa -Programmierung zu verbessern.
Dieses Spiel wurde verwendet, um ein deklaratives Game-Programming-Tutorial bei PPDP 14 zu präsentieren (siehe http://keera.co.uk/blog/2014/09/24/game-programming-videos-code/ für Details). Folien sind von dieser Website verknüpft.
Das Spiel ist auf Hackage erhältlich. Alle Medienressourcen sind in der Verteilung enthalten (siehe Lizenz für Umverteilung). Sie können es mit*installieren:
$ cabal update
$ cabal install haskanoid
$ $HOME/.cabal/bin/haskanoid
Wenn Sie den Code untersuchen und möglicherweise Änderungen vornehmen möchten, führen Sie Folgendes vor:
$ 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
Um es mit dem Wiimote zu spielen, müssen Sie das Programm mit den besonderen Argumenten +RTS -v0 ausführen. Eine Erklärung finden Sie unter http://github.com/ivanperez-keera/hcwiid.
* Zusätzliche Anmerkungen :
Benutzer von GHC 7.8 müssen zusätzliche Schritte ausführen. Anweisungen finden Sie in Ausgabe 2.
MacOSX -Benutzer (oder Personen ohne Wiimote) möchten möglicherweise Wiimote und Kinect -Unterstützung deaktivieren. Sie können dies mit den Kabalenflaggen wiimote und kinect tun, indem Sie cabal install --flags="-kinect -wiimote" ausführen.
Um die oben genannten Installationsanweisungen zu verwenden (mit Behinderten -Wiimote- und Kinect -Unterstützung, siehe Bullet Point oben), benötigen Sie die folgenden Pakete:
Auf Debian/Ubuntu können Sie sie mit:
$ 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
Um Wiimote und Kinect -Unterstützung zu ermöglichen, benötigen Sie auch die folgenden Pakete:
Auf Debian/Ubuntu können Sie sie mit: jeweils installieren:
$ sudo apt-get install libcwiid-dev
$ sudo apt-get install freenect
Um zu versuchen, die Dinge so klar wie möglich zu machen, enthält der Code eine viel Schleppschwerdokumentation und Kommentare, da wir vernünftigerweise passen konnten. Sie können diejenigen kompilieren mit:
$ cabal unpack haskanoid ## Or git clone this-repo
$ cd haskanoid-*
$ cabal install --only-dependencies
$ cabal haddock --haddock-executables --haddock-internal
Möglicherweise möchten Sie auch die Flags -f-wiimote und -f-kinect zu den obigen Kabale hinzufügen, um sie ohne Wiimote und Kinect -Unterstützung zu installieren.
Yampa (http://github.com/ivanperez-keera/yampa), die von Antony Courtney und Henrik Nilsson erstellte passend funktionelle reaktive Programmierung.
Dunai (http://github.com/ivanperez-keera/dunai), eine extrem leistungsstarke reaktive Programmierungsimplementierung, die klassische und arrowisierte funktionelle reaktive Programmierung, reaktive Programmierung, Stream-Programmierung und andere durchführen kann. Es enthält einen Yampa -Ersatz, der Haskanoid leiten kann.
hcwiid (http://github.com/ivanperez-keera/hcwiid), ein Wrapper in der CWIID-Bibliothek, um mit Wiimotes zu kommunizieren.
Freenect (https://hackage.haskell.org/package/freenect), Bindungen zur Kommunikation mit Kinect -Geräten.
FRP-Kollisionen (https://github.com/keera-studios/haskell-frp-yampa-physics), ein einführendes Beispiel dafür, wie Kugelkollisionen in Yampa durchgeführt werden.
Magic Cookies (https://github.com/keera-studios/magic-cookies), ein kommerzielles FRP-Spiel, das in Haskell mit Yampa geschrieben wurde, das bei iTunes und Google Play verfügbar ist.
In der praktischen Datei finden Sie Ideen, um Haskanoid zu verbessern und sich auf (game-) Programmierbereiche zu konzentrieren, die Sie möglicherweise tiefer tauchen möchten. Die Bereiche sind: funktionale (reaktive) Programmierung, Leistung, Human-Computer-Interaktion und Eingabe/Ausgabe sowie Spieledesign.
Wenn Sie dieses Spiel attraktiv finden und es verwenden möchten, um funktionale Programmierung oder andere Themen zu unterrichten, würden wir uns sehr freuen, darüber zu wissen. Wir können zusätzliches Material bereitstellen, das Sie den Schülern zeigen können (Videos, Screenshots usw.).