I’ve been learning Clojure/ClojureScript/HTML5 by diving head first into writing a game:
Tempest in ClojureScript (GitHub)
Tempest is, of course, the best vector game ever made. I’m implementing the original arcade version, not the (much improved) Tempest 2000, and sticking with wireframe vector graphics.
ClojureScript has been pretty nice to work with, despite never having really used a Lisp for anything substantial before.
At this point, the game has multiple levels and one enemy, but no actual game logic. The player is drawn, and can be controlled with the left/right arrow keys. Space bar fires a bullet, and bullets destroy an enemy… but nothing is finished, it’s all just simple building blocks at the moment.
Google Closure’s keyboard handler doesn’t seem to be sufficient, and will probably have to be replaced. You can’t press one key while holding down another.