I like Scratch, but as some have said, it can be a little weird and buggy and difficult to make anything robust or complex.
I have also taught students (7th & 8th grade) how to make multimedia, interactive ebooks and games using Flash with ActionScript (but this requires buying Flash and/or Adobe Creative Suite)
For basic introductions to programming and the process of thinking about AI and logical conditions, I use Microsoft's Kodu GameLab. It's a free download, and lets you create games that run on Windows or Xbox. However, the games are built using pre-made graphics, so it is not completely open-ended (however, you can use the built-in 3D models and terrain editor in creative ways, including puzzle games, racing games, sports games, you can be pretty creative with it.)
If you want something more complex and even professional, there are a variety of fantastic game development engines you can now download for free, such as Unreal Developers Kit, Blender (this is better as a 3D modeling tool than programming system, from what I understand), Shiva, and Unity 3D <-- I am currently using Unity to create a game that will run on Mac, PC, Android, or iPad. It's quite a complex system at first, but one good thing about Unity is that it is more popular and therefore has more support materials than some other ones -- I invested in 2 books (in Kindle format to save money) which have proved invaluable: Unity 3.x Game Development by Example -- Beginner's Guide, and Unity 3.x Game Development Essentials.
I'll let everybody know when my game becomes the next Angry Birds.