Seeing this reminds me of a similar project I had to do as an undergrad, though nowhere as fun/elegant as the submitter's. Also nice to see web workers implemented for the AI as it's a great usage example.<p>We were given the choice to alternatively implement a board game (pending approval) instead of taking a more formal final exam. The only catch was since it was a course focusing on Java, we had to use Swing (which if one has used Swing, the formal exam almost looks like the better option).<p>Figuring the game would be more fun, I ended up implementing connect four, thinking it would naively be easy enough to do the basics based on my previous GUI experience with Windows Forms and HTML/CSS and add to it if I had time. Boy, was I wrong.<p>Writing the game engine/logic was a great experience, but dealing with Swing took probably 70% of the time and had to ditch doing AI for a 2 player only approach. Just the quirky/unintuitive nature of the Swing GUI builders in comparison to Visual Studio Windows GUI Forms made it easier to just write out the GUI by hand (which was not that much better). The issue of it isn't even Swing itself causing headaches so much as the way the official Swing SDK written[1].<p>Code for it is on my Github still, but other than serving as a reference for anyone else (and warning in the readme), I think I would rather start over in a different language than contribute anymore to it :).<p>[1] A snippet of Qt Jambi and the same code written with the official Swing SDK (<a href="http://pastie.org/8324820" rel="nofollow">http://pastie.org/8324820</a>)