You don't see that much 2D on flipcode, so I thought I'd submit some images from a small game I'm writing, Radia.
It's really just another version of arkanoid, with a few differences I thought would be quite fun. You control a circular paddle, and instead of bricks, destroy the level 'worms' style, taking chunks out of it.
To start with, it uses only API functions, which are, unfortunately, quite slow, but allow me to target people who are not avid gamers, and who are unlikely to have a recent version of DirectX. It was a real headache getting around some of the major slow-downs, and the fact it was written in VB didn't do much to help. The biggest problem was that flipping the entire backbuffer to the screen is far too slow, yet often a large ammount of the level needs updating, usually in the case of the water.
The backbuffer is divided into sections, which get smaller according to the ammount of activity on screen. Water is divided into strips, about 20 pixels wide, with sub-strips of 2 pixels. Each large strip is moved vertically every frame, while smaller strips are moved every 'x' frames according to the speed of the computer.
This is drawn directly to the screen.
Fire is done with a pre-renderd mask, which is coloured, then animated in the same way as the water. It turned out a lot better than I expected.
The levels are all pre-rendered images, and the masks are calculated on startup. The paddle is made from sections, which are rotated on startup with a small algorithm I wrote.
There's nothing really fancy in it, but it ended up quite nicely. Some information, and a small demo can be found here: