Personally, I think the best way to learn to code for someone who has talent for it is project Euler (projecteuler.net). No dependencies, no IDEs, no graphics and no gimmicks. Very short, clear, discrete problems that can be solved using any language.<p>If you really need shooting, explosions and fancy graphics to keep you motivated then I don't think programming as a career is for you. Most programming jobs aren't going to give you much of that. And frankly, I think all the wizz-bang graphics just interferes with your learning and getting good at visualizing in your own head what the code is doing.