นี่คือเกม Breakout Haskell ที่ใช้งานโดยใช้ Library การเขียนโปรแกรมปฏิกิริยาที่ใช้งานได้ Yampa

กราฟิกและเสียง SDL 1.2
อุปกรณ์อินพุตหลายตัว (แป้นพิมพ์, เมาส์, อินฟราเรด Wiimote, 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
คุณอาจต้องการเพิ่ม Flag -f-wiimote และ -f-kinect ลงในคำสั่ง cabal ด้านบนเพื่อติดตั้งโดยไม่ต้องรองรับ wiimote และ kinect
Yampa (http://github.com/ivanperez-keera/yampa) การดำเนินการเขียนโปรแกรมปฏิกิริยาแบบลูกศรที่สร้างขึ้นโดย Antony Courtney และ Henrik Nilsson
DUNAI (http://github.com/ivanperez-keera/dunai) การใช้งานการเขียนโปรแกรมปฏิกิริยาที่ทรงพลังอย่างยิ่งที่สามารถทำการเขียนโปรแกรมปฏิกิริยาแบบคลาสสิกและลูกศรฟังก์ชั่นการเขียนโปรแกรมปฏิกิริยาการเขียนโปรแกรมสตรีมและอื่น ๆ มันมีการแทนที่ Yampa ที่สามารถวิ่ง Haskanoid ได้
hcwiid (http://github.com/ivanperez-keera/hcwiid) เสื้อคลุมรอบ ๆ ห้องสมุด cwiid เพื่อสื่อสารกับ wiimotes
freeenect (https://hackage.haskell.org/package/freenect), การผูกเพื่อสื่อสารกับอุปกรณ์ kinect
การชนกันของ FRP (https://github.com/keera-studios/haskell-frp-yampa-physics) ตัวอย่างเบื้องต้นเกี่ยวกับวิธีการชนกันใน Yampa
Magic Cookies (https://github.com/keera-studios/magic-cookies) เกม FRP เชิงพาณิชย์ที่เขียนใน Haskell โดยใช้ Yampa ที่มีอยู่ใน iTunes และ Google Play
ในไฟล์บนมือคุณพบแนวคิดในการปรับปรุง haskanoid ในขณะที่เพ่งความสนใจไปที่การเขียนโปรแกรม (เกม) พื้นที่ที่เกี่ยวข้องกับการเขียนโปรแกรมที่คุณอาจต้องการดำน้ำลึก พื้นที่คือ: การเขียนโปรแกรม (ปฏิกิริยา) การทำงาน, ประสิทธิภาพ, การโต้ตอบระหว่างมนุษย์กับคอมพิวเตอร์และอินพุต/เอาต์พุตและการออกแบบเกม
หากคุณพบว่าเกมนี้น่าสนใจและต้องการใช้มันเพื่อสอนการเขียนโปรแกรมที่ใช้งานได้หรือวิชาอื่น ๆ เรายินดีที่จะรู้เกี่ยวกับเรื่องนี้ เราสามารถจัดหาวัสดุพิเศษที่คุณสามารถแสดงให้กับนักเรียน (วิดีโอภาพหน้าจอ ฯลฯ )