I've recently started teaching myself C++. It's my ultimate goal to create and sell an air traffic control simulation for the PC. My concept is quite different from the sims already on the market, so I'm not just doing the same thing as everybody else. Basically, it would be a two-dimensional (x and y axis) concept.

I've been reading C++ books for about 3 months now, and starting to feel at ease with functions, classes, objects, pointers and so on. My trouble is I don't see the light at the end of the tunnel. Beyond the basics of C++, what else do I need to be learning? Someone mentioned STL, data structures and DirectX as logical learning steps beyond C++.

What I need to know is: Where should I be focussing my studying? I don't intend to become a master programmer, I just want to write a little program that keeps track of a couple hundred aircraft "objects", each with their own position, speed, direction, and altitude data.

It seems simple, and yet, I can't imagine how I'll ever create this from what little I already know of C++.

The way I usually approach things like this is to start creating a really simple basic model of what you want to do. You could program some "random" circles "flying" across the screen, and display their postion and speed for example. In the process of doing something like that you will become more aquainted with the language, at the same time as developing the rudements of what your ultimate goal is. This is know as "leaning by doing". I prefer this method over typing countless examples from a text book. It's the difference between going to school and having a job (virtual one), where you actually apply your knowledge prior to being an "expert". Then as you run into problems or blank spots in your knowledge, you can research the specific solution to the immediate problem.

Also, as a side note, I wonder if you have considered whether your application would benifit from being "web-based" rather than stand alone. For example, if users will be accessing this app. across a LAN or the internet, it might be worth considering that requirement in your choice of programming language. You may (or may not) want to consider a .NET application using C# (the native .NET language) instead of C++.

Just a thought. Anyway, I wish you the best in your adventure. It sounds like a fun project.

Thanks for the good advice. I've started writing my program already, which consists of an "aircraft class", from which every aircraft is an object containing variables such as X-position, Y-position, altitude, speed, heading, and several methods like climb, turn, reduce speed, etc.

On a real radar scope, very little actually happens. Aircraft "blips" move around, each with a data tag to display altitude and speed.

Should I be trying to write this in a DOS window, or WIN32 application? The books say to learn C++ by writing into a DOS window, then advance into WIN32.

Coould you let me know if the "class" concept above is a reasonable method of data management?

It depends on how you want to represent it and what you are willing to learn. Simple text-based input/output is easier for command-line(DOS) applications. If you want to make a WIN32 application, you will need to learn about window classes and GDI libraries. Alternately, you could learn DirectX but I think that would be overkill for an app like yours. It all depends on what exactly you want to do in regards to displaying your information and handling input from the user. You might want to look into an open-source solution like SDL (Simple Directmedia Layer), which could ultimately turn your application cross-platform, which in turn means you'd be wanting to focus more on the STL and non-Windows specific commands and classes.

Basically, if you want a Windows application, pick up a Windows programming book. It'll teach you how to create windows, message handlers, etc. all specific to making a WIN32 program. DOS programming graphically is a pita, if you only realy need text only, go with it, it'll be a lot easier and will apply the knowledge you already have