You probably have not heard of Haxe or NME, but they are both very cool.
NME is a cross-platform library which uses a "Flash-like API," so if you are familiar with flash.display.Sprite and friends, most of them are implemented. Even if you are not familiar with Flash's API (or do not care to learn), trust me, it is easy-to-use and makes a lot of sense when you start writing games.
NME currently supports "targets" like webOS, iOS, Android, Windows, Mac, Linux and Flash. You can write platform-agnostic code that compiles as native C++ (using SDL, OpenGL or OpenGL ES, etc) for mobile targets like webOS, iOS and Android, or desktop targets like Windows, Mac and Linux. Your code can also compile for the web, running your same game or application in Flash.
There is also a project called "jeash" which maps the Flash API to HTML5 canvas, so theoretically your same application could also publish to canvas. This is something I have not played with as extensively, as Flash performs faster and translates more transparently from C++, but its out there and people use it!
There were older instructions on this thread that I am overwriting, since the process has changed (and gotten better). If you would like more information for getting started with Haxe NME, you can visit a personal blog post about it, here:http://www.joshuagranick.com/blog/2011/ ... made-easy/
As a developer, find a method that works for you, and allows you to express yourself creatively. There are many good choices for writing a new application, using C/C++, Airplay, NME, ShiVa 3D and more. Using Haxe and NME together has been a solution has felt very comfortable for me. If this is a benefit for you, or may be a benefit for you, I encourage you to look into it, ask me questions, try it out, or contribute if you want! It is an open-source, MIT-licensed project. I don't want to sound as if I am saying that Haxe NME is better than C++ ... use the tools that allow YOU to do what you want with the platform.
(This was rewritten July 29th, 2011, so the comments that follow may not make complete sense, since they point to the previous instructions. Comments that appear later in the thread relate to these instructions)UPDATE:
There is a new website for NME which includes more information, tutorial and examples from the framework. There are also forums which may be helpful if you have any questions. The website is located at http://www.haxenme.org