2, decide on C++ or C#. they're both very different.
3, What tools do you have available?
4, How much do you already know?
5, What do you want to learn?
6, Why do you want to learn it?
7, What languages do you already use fluently
8, do you have a lot of free time?
I'm a C++ programmer myself, though I've not done anything in over a year (I've been PHPing ^^)
2, decide on C++ or C#. they're both very different.
3, What tools do you have available?
4, How much do you already know?
5, What do you want to learn?
6, Why do you want to learn it?
7, What languages do you already use fluently
8, do you have a lot of free time?
1. I will then
2. C++
3. XNA (but I know this is C#)
4. Little
5. How to make a frickin game or app LOL
6. I'm going to do a Computer Games Development course in college in 2 years
7. eh English, French LOL. nah nothing. small bit of HTML...
8. Not at the mo because of exams but in the next 2 weeks yes definitely
And there is no way I'll be able to teach you to make a game with any kind of sophisticated graphics, that's what Uni's and books are for
My c++ book collection is as follows.
Jamsa's C/C++/C# Programmer's Bible Second Edition (A4, 3 inches thick)
Sam's Teach Yourself C++ in 24h Third Edition (A4, 1 inch thick)
Game Coding Complete First Edition (A4, 1 inch thick)
3D Game Engine Programming (Just below A4, 2 inches thick)
I've also read endless Online Tutorials and explored the code of countless Open Source projects.
I'd learn the basics first, though. Make a hello world app, then keep adding to it.
1. Simple int main cout hello world
2. move to prinf
3. add another function to call cout
4. add a prototype for that function and define it after int main
5. store the output in a variable first
6. use pointers
7. use funtion arguments
so you'd build up from something like this:
#include <stdio.h>
int main() {
cout << "Hello, World!" << endl;
return 1;
}
to this:
#include <iostream>
#include <string>
using namespace std;
int hello(string * output);
int main() {
const string * hw = "Hello, World";
int ret;
ret = hello(hw);
return ret;
}
int hello(string * output) {
int ret;
if(string.length != 12) {
ret = 2;
} else {
ret = 1;
}
cout << output << endl;
return ret;
}
(of course that code will likely not compile as I've just written it off the top of my head.
)
hehe, we should so have a competition to see who can write the most complex hello world app ^_^
http://en.wikibooks.org/wiki/Transwiki:L...ms#C.2B.2B
http://en.wikibooks.org/wiki/Transwiki:L...ms#C.2B.2B
hehe, wow at the windows ASM one 
format PE GUI
entry start
section '.code' code readable executable
start:
push 0
push _caption
push _message
push 0
call [MessageBox]
push 0
call [ExitProcess]
section '.data' data readable writeable
_caption db 'Win32 assembly program',0
_message db 'Hello, world!',0
section '.idata' import data readable writeable
dd 0,0,0,RVA kernel_name,RVA kernel_table
dd 0,0,0,RVA user_name,RVA user_table
dd 0,0,0,0,0
kernel_table:
ExitProcess dd RVA _ExitProcess
dd 0
user_table:
MessageBox dd RVA _MessageBoxA
dd 0
kernel_name db 'KERNEL32.DLL',0
user_name db 'USER32.DLL',0
_ExitProcess dw 0
db 'ExitProcess',0
_MessageBoxA dw 0
db 'MessageBoxA',0
section '.reloc' fixups data readable discardable
I soooo want to program a roguelike in ASM, that'd be really fun ^^
HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
Looks good


I will suggest that your first game project should be a roguelike as they basically require no graphics, this leaves you to hone your logic skills and devise some algorithms to deal with various tasks.
Go download a rogue clone to see the basic ideas behind it, and then start building

However, make sure you're confident enough to deal with pointers and classes and STL with ease. And whilst your learning, steer clear of vendor specific addons to the language.
that means no windows.h, no directX or similar. Also try and code an interface engine first, so that you can swap out the functions later without changing vast ammounts of code
so instead of using
cout << s_blah << endl;
you'd write a function like this:
int CZMQ_out(string out, bool endl = false) {
if (endl == true) {
cout << out << endl;
} else {
cout << out;
}
return 1;
}
and use the following whenever you wanted to print something to console
CZMQ_out(s_blah, true);
That means you can switch out for curses or SDL later on 
after you've made your low level abstractions, you could make high level ones too
so in the case of a roguelike instead of
CZMQ_pos(x,y);
CZMQ_out('@', false);
you might have this (it's just a prototype)
CZMQ_rl_entityh(CZMQ_rl_entity *entity, int action, CZMQ_rl_entityh_params *ehp);
with custom classes, enumerated lists, etc. that way you could completely swap out the output style (DX for example) and not have to change much logic.