Scratch is an online visual programming language designed to teach newcomers how to code. If you know me very well, you'll know I've often been critical of visual programming languages, citing them as being more cumbersome to learn and use than plain code. While Scratch isn't a total exception, it struck me as one of the better options out there, and so I set out to create something in it myself to find out.
The result is Scratcheroids!—a simple, yet sophisticated interpretation of the classic Asteroids game that uses many programming techniques I regularly employ in actual programming languages. While the limitations of Scratch are clear, I was pleasantly surprised to realize just how far I could take it, and Scratcheroids! barely... er, scratches the surface. Normally, Scratch projects are limited to a play space of just 480x320. I circumvented this by creating a barebones camera system which not only simulates a larger area, but supports parallax depth, variable position and zoom, and even keyframe animations. Of course, it does beg the question: if semi-advanced algorithms are required to get much out of it, should you really be using Scratch in the first place? The answer is clearly no, not for any kind of serious work. But for programming for fun, or introducing yourself to programming concepts for the first time, Scratch definitely deserves a look.
The biggest downside is that as of this writing, Scratch still relies on Flash, and we all know where that's headed. Fortunately, the community has stepped up to provide multiple HTML5 players such as Phosphorus*, which you can use to play Scratcheroids! directly on this site below. I have also created an enhanced HTML5 port of my own, which you can try as well. Or, continue to the original site to have a look at the entire source "code" for yourself. All projects on Scratch are open!
Play Scratcheroids! on Scratch
Play Scratcheroids! HTML5 Enhanced
(*Update: Scratch is now HTML5, but I still recommend the enhanced version for broader resolution and higher framerate support)