I'm interested in starting over. Any suggestions?
Hello. :)
About 3 or 4 years ago, I started getting interested in programming video games. Like so many others, I just wanted a creative outlet and I saw video games (as a combined audio/visual/storytelling experience) to be the perfect outlet. So naturally, I started programming. Makes sense, right? Yeah, I know it doesn't. =P
I bought a book called Teach Yourself C++ in 21 Days and read it until I got to the chapter on classes. Inheretance? BO-RING! Templates? BO-RING! Where's the graphics stuff? I skipped ahead and couldn't find any in the book! GRR! This book sucks, right? Yeah, I know it doesn't. =P
So I skipped that stuff and bought Tricks of the Windows Game Programming Gurus. I got frustrated about halfway through because I had problems getting Direct Draw to work the way I wanted it to. I liked loading bitmaps from a resource like Andre taught me in the GDI chapters, but I could find no way to do that with Direct Draw. I found a way on MSDN to load a bitmap into a DDRaw surface using GDI somehow (I forget) but I couldn't get it to work properly using MinGW (Dev-C++ was my IDE). Obviously the compiler sucked, right? Yeah, I know it doesn't.
So I found SDL and was amazed at how easy it was. I made half a Tetris clone and was very proud of myself, but instantly I wanted to do platformers and Metroid clones and I needed to build a sprite class. Could this be the point where my lack of C++ skills came back to haunt me? You bet ya. I started thinking, "What the hell am I doing? I don't actually like this stuff, do I? I just wanted a creative outlet of some kind!"
So I dropped programming completely and started drawing, painting, writing stories, playing guitar, and writing music. A lot. For like a year and half.
Now that I have that creative stuff out of my system, programming is still calling my name. I guess it grew on me. But this time, I want to do it right. I want to learn the skill, not necessarily to create the coolest games ever, but perhaps for all kinds of applications and maybe even advance my career a bit. I just have this insatiable need to program things that work, and to do that I need to learn the right way.
So my plan is to re-read Teaching Yourself C++ in 21 Days from back to front. I want to do pointless programming exercises over and over again so that I can learn all about templates, classes, inheretance, data structures, overloading, and all that BO-RING stuff. Does anyone have any other books they can recommend, or perhaps some self-teaching strategies or even some useless exercises to try?
It sounds like the best thing you can do is go learn Python. Python's pretty awesome, and even better is that you can use PyGame to make game stuff. Think of PyGame as a much, much more feature-filled SDL which is also easier to use.
Now, I'm sure you're thinking, "Man, learn another language? I don't want to waste me C++ skills!" But you won't be -- you will learn Python soooo much faster than C++, and a lot of the skills you pick up in one will apply to the other. I believe, that for a person with no programming experience, it will be faster to learn a language like Python and then C++ instead of just learning C++ first.
-- John
Now, I'm sure you're thinking, "Man, learn another language? I don't want to waste me C++ skills!" But you won't be -- you will learn Python soooo much faster than C++, and a lot of the skills you pick up in one will apply to the other. I believe, that for a person with no programming experience, it will be faster to learn a language like Python and then C++ instead of just learning C++ first.
-- John
"C++ How to Program" 5th Edition
Excellent. I bought the fourth edition and it came with a homework book. $90, though.
Excellent. I bought the fourth edition and it came with a homework book. $90, though.
Perhaps you're just not meant to be a programmer? The blank project workspace is my paper, and the source code is my poetry. I find it to be an art in itself to get the systems to operate together in perfect harmony, effeciently and transparently.
It seems to me like coding to you is hacking shit together to get it out of the way for the fun stuff. Programming is the fun stuff, to me.
You might be better suited as an artist on a team of programmers or a mod maker where the core is already done for you.
It seems to me like coding to you is hacking shit together to get it out of the way for the fun stuff. Programming is the fun stuff, to me.
You might be better suited as an artist on a team of programmers or a mod maker where the core is already done for you.
AP, I am totally down with learning other languages too. Thanks for your suggestion. If it takes me 20 years to become an expert in C++ (or any other popular, powerful language), then so be it. I will enjoy the ride along the way.
skulldrudgery, thanks for that suggestion. I will look into it immediately.
What do you guys think of Thinking In C++? I see it for free on the web everywhere but I have yet to read it. Unless it's a horrible book that's going to set me back somehow, I don't see why I shouldn't read it sometime.
Edit:
Grozzler, you might be right. I'm not sure if you surmized this from my post, but I did reach that exact conclusion a while ago. I needed a creative outlet, and that's why I started doing the drawing and the music and storywriting -- and subsequently dropped the programming. The drawing and stuff is quite fullfilling and I still do it today. I will probably always do it, even if no one ever gets to see any of my stuff.
But like I said, I feel inspired to program. Not to design games...but to actualy code stuff. Anything. Stupid exercises, powerful apps. It's all good. It's a huge urge for me right now.
Who knows, it may not last, but why not give it a try, ya know?
skulldrudgery, thanks for that suggestion. I will look into it immediately.
What do you guys think of Thinking In C++? I see it for free on the web everywhere but I have yet to read it. Unless it's a horrible book that's going to set me back somehow, I don't see why I shouldn't read it sometime.
Edit:
Grozzler, you might be right. I'm not sure if you surmized this from my post, but I did reach that exact conclusion a while ago. I needed a creative outlet, and that's why I started doing the drawing and the music and storywriting -- and subsequently dropped the programming. The drawing and stuff is quite fullfilling and I still do it today. I will probably always do it, even if no one ever gets to see any of my stuff.
But like I said, I feel inspired to program. Not to design games...but to actualy code stuff. Anything. Stupid exercises, powerful apps. It's all good. It's a huge urge for me right now.
Who knows, it may not last, but why not give it a try, ya know?
it took me years of picking up and dropping C to finally want to learn it. Dont get me wrong I always had the desire to program. It wasnt until I had found something I really wanted to write though that i was truly able to start learning.
So my suggestion: Figure out what you want to do then learn howto do it. Im completely self taught(I even taught my self maths past algebra) all the effort i put into learning these skills were not for the reason of learning them. Not until i had achieved a few finished programs. Some things i found very useful.
Implement your own linked list class.
Then learn why STL is way better ;)
I found writing some simple classes first helps alot too, a good starting point is a 2d vector class, then try a 3d one.
Get good at math, youll understand why programming is so useful once you've scribbled out 20 pages of math that your pc could have done after you entered 20 lines of code.
Goto guru.com and start making some of the simpler projects there, dont bid - just do it. I have written quite a few programs based on ideas from there and learned many important concepts, just by acting like it was important to finish on time and properly.
Also I code many utility programs for myself. I wrote a torrent file scheduler(it works with my browser to make things real easy), an image converter, a mp3 tag changer/organizer(idea stemmed from guru.com) and many other programs ive needed to use but couldnt find.
Another good learning tool is connecting non pc realted thigns with programming. I wrote a program to keep track of feeding and watering an indoor garden as well as updating a spreadsheet with it information, I also wrote a program to control
stepper motors from old disk drives from the paralell port(I built and designed the circuit completely out of scrap pc parts) and had to wrote the program in C on a 16 mhz 386.
There was no point really to writing any of those besides learning, and keeping myself occupied. I hope you find some of my suggestions useful.
So my suggestion: Figure out what you want to do then learn howto do it. Im completely self taught(I even taught my self maths past algebra) all the effort i put into learning these skills were not for the reason of learning them. Not until i had achieved a few finished programs. Some things i found very useful.
Implement your own linked list class.
Then learn why STL is way better ;)
I found writing some simple classes first helps alot too, a good starting point is a 2d vector class, then try a 3d one.
Get good at math, youll understand why programming is so useful once you've scribbled out 20 pages of math that your pc could have done after you entered 20 lines of code.
Goto guru.com and start making some of the simpler projects there, dont bid - just do it. I have written quite a few programs based on ideas from there and learned many important concepts, just by acting like it was important to finish on time and properly.
Also I code many utility programs for myself. I wrote a torrent file scheduler(it works with my browser to make things real easy), an image converter, a mp3 tag changer/organizer(idea stemmed from guru.com) and many other programs ive needed to use but couldnt find.
Another good learning tool is connecting non pc realted thigns with programming. I wrote a program to keep track of feeding and watering an indoor garden as well as updating a spreadsheet with it information, I also wrote a program to control
stepper motors from old disk drives from the paralell port(I built and designed the circuit completely out of scrap pc parts) and had to wrote the program in C on a 16 mhz 386.
There was no point really to writing any of those besides learning, and keeping myself occupied. I hope you find some of my suggestions useful.
No, no, no, NO! All those 'For Dummies' and 'Learn in 21 Days' are the worst books ever! Never ever read them!
Instead, read 'C++ From The Ground Up' by Herbert Schildt and/or 'C++ Primer Plus'
by Stephen Prata. These books are the best when it comes to beginning C++.
Alternatively, you can try 'Beginning C++ Game Programming' which gives you C++ in a gaming perspective (although no graphics, just console). Remember, this is NOT a game design book. This is a C++ book for beginners using games (Tic-Tac-Toe etc.) as... the explanation material. Very good.
And please, you have to understand that learning to program is extremely difficult! Never expect to right even a simple game right away. Learn, learn, learn first. Do stupid examples first. And don't dump any part of language. Learn OOP, templates, all the other stuff.
When you are comfortable with plain C++, go for either OpenGL or DirectX...
Hope I helped.
Instead, read 'C++ From The Ground Up' by Herbert Schildt and/or 'C++ Primer Plus'
by Stephen Prata. These books are the best when it comes to beginning C++.
Alternatively, you can try 'Beginning C++ Game Programming' which gives you C++ in a gaming perspective (although no graphics, just console). Remember, this is NOT a game design book. This is a C++ book for beginners using games (Tic-Tac-Toe etc.) as... the explanation material. Very good.
And please, you have to understand that learning to program is extremely difficult! Never expect to right even a simple game right away. Learn, learn, learn first. Do stupid examples first. And don't dump any part of language. Learn OOP, templates, all the other stuff.
When you are comfortable with plain C++, go for either OpenGL or DirectX...
Hope I helped.
If you haven't done anything in 4 years I'd say give it up and find something else to do.
Programming is more about motivation than anything. You have to want it and you have to follow through with it. You are generally going into solving a problem
not knowing all the answers and having to research and prototype. Good Design is based on experience and ability. The other things are paradigms and patterns.
Languages don't mean much, they are all designed to do the same things from different models and approaches.
I'd start with Scheme. Scheme is clean, you are only facing the problem, and not the complexity of the language. It is probably the simplest language around. It is also fundamentally a very powerful language. If you can master scheme you can master any language they throw at you.
Programming is more about motivation than anything. You have to want it and you have to follow through with it. You are generally going into solving a problem
not knowing all the answers and having to research and prototype. Good Design is based on experience and ability. The other things are paradigms and patterns.
Languages don't mean much, they are all designed to do the same things from different models and approaches.
I'd start with Scheme. Scheme is clean, you are only facing the problem, and not the complexity of the language. It is probably the simplest language around. It is also fundamentally a very powerful language. If you can master scheme you can master any language they throw at you.
chad_420, that helps emmensely. A friend of mine is taking CS in school and he would always have these tedius little projects to do. For example, he had to make a grocery store simulation where each cash register line was a queue and it had to work in a very specific way. Sounds tedius as hell, but I was actually very jealous because I remember reading the C++ book I have and thinking, "Great...queues. How can I put this to use?" Coming up with project ideas was tough.
Zodiak, thanks for the feedback on the books. I've had a sort of attitude re-adjustment with respect to programming, and so I'm no longer in it just to do something great and get recognized. I'll check out the books you mentioned. The longer and more boring, the better. Seriously. I want to know this stuff like English before I even think of doing something that cool. And then I want to learn MFC or Win32 or whatever else I need to build some powerful windows apps. And then I want to learn Direct X and Open GL like they're English "just because."
With that said, please don't make fun of my English skills! It's only my first language!
>>If you haven't done anything in 4 years I'd say give it up and find something else to do.<<
It's been about 4 years since I first began programming, but I programmed for a few years after that. The biggest obstacle, for me, was wanting to do the creative stuff too quickly, and failing to recognize the creativity inherent in programming itself.
I see no reason to give up at this point because I'm only investing my own free time. If I feel like quitting later on, then perhaps I will with no harm done. That's how I see it right now. If I were signing up for $thousands in CS classes, then I would understand your point, but at this points its just a hobby, and perhaps a temporary one.
Zodiak, thanks for the feedback on the books. I've had a sort of attitude re-adjustment with respect to programming, and so I'm no longer in it just to do something great and get recognized. I'll check out the books you mentioned. The longer and more boring, the better. Seriously. I want to know this stuff like English before I even think of doing something that cool. And then I want to learn MFC or Win32 or whatever else I need to build some powerful windows apps. And then I want to learn Direct X and Open GL like they're English "just because."
With that said, please don't make fun of my English skills! It's only my first language!
>>If you haven't done anything in 4 years I'd say give it up and find something else to do.<<
It's been about 4 years since I first began programming, but I programmed for a few years after that. The biggest obstacle, for me, was wanting to do the creative stuff too quickly, and failing to recognize the creativity inherent in programming itself.
I see no reason to give up at this point because I'm only investing my own free time. If I feel like quitting later on, then perhaps I will with no harm done. That's how I see it right now. If I were signing up for $thousands in CS classes, then I would understand your point, but at this points its just a hobby, and perhaps a temporary one.
You can learn everything you need to know about making a game on the internet, with enough google you can find just about anything you need about programming.Also, here are some links that I like to go to CProgramming.com, MSDN,fre CPP books,Programmershelp.co.uk,CPP reference.If you wish to learn allegro; here's the allegro vivace, or for SDL tutorials here's some tutorials, or DirectX tutorials; I would recommend MSDN for DirectX tutorials.[smile]
EDIT:fixed links.
EDIT:fixed links.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement