So it's only about twice as large as what you found as your maximum, the sample just looks like it needs a much larger map because of the way Terragen renders it. Still, it seems you don't have as much memory as they expect people running the sample to have. Your main options are: 1. Find a way to make due with fewer points. 2. Get more memory. Note, this option will make the minumum system requirements for your game higher. 3. Make multiple smaller height maps and save them to disk, probably after compressing. Then, make your program try to anticipate which ones will be needed soon so it can decompress and load them before they need to be show.
XNA is a framework, not an full game engine. It makes many game related tasks easier, providing a basic structure and some helpful classes, and handles some messy directx details for you. I'd suggest using XNA simply because it will make your development faster; it will let you start experimenting with game design sooner as opposed to spending your first efforts learning to deal with lower level graphics programming.
Yes, C# is used more in game programming than java; although, there have been some interesting java games recently (minecraft comes to mind). C++ is still the most common language for game programming, but using it adds unnecessary complexity if your game doesn't have heavy performance demands.
If they are on a set pattern, trigonometric functions are useful. If their movement is not on a set course, such as if they are reacting to the player, then there are a few methods to achieve those smooth curves. The main way is to model their movement as vectors and change an object's movement using velocity and accelerating vectors.
eg: If an object's velocity is (3,0) and its acceleration is (-1,2) for 3 seconds, then it will smoothly change course from east to north while accelerating. In the case of a game like blazing lazers, this is like simulating thrust.
One draw for me is that I've always loved the idea of magic. The image of mages devoting their mental energies toward learning the rules of magic and bending energy to their will with arcane incantations always thrilled me. Most importantly, I love the idea of being able to use raw willpower to affect the world if you know enough. Programming is the closest the real world has to magic. I use a magical language to control electricity in useful ways: communicating over great distances, extracting information from data and creating worlds that are ruled by my personally crafted laws.
In terms of game programming, what could be more motivating than knowing that you can be the God of your own world if you put in the effort to create it. Seeing your world behave how you intended is a fantastic feeling; the feeling of seeing your world behave in untended ways that you like is transcendent. Programming shortens the gap between your mind and the outside world, even dry math concepts can turned into fascinating displays and interesting behaviors.
Programming motivates me because I see my programs literally as my thoughts given power.
Your question is more general than game design. I'd recommend reading Clean Code, a book by Robert Martin which covers several aspects of good program design and effective code layout which most other books ignore. In general, small files with small classes and small methods is ideal for making code easy to test, debug and extend. I recall that he specifically recommends in his java example staying under 500 lines per file and trying to keep them around 200 lines
This solution seems counter-intuitive. Perhaps you should try putting the subtraction logic in the subtraction operator and having the subtraction-assignment operator use the subtraction operator then assign the result. That would make this easier to debug and would make your logic easier to follow.
Ruler is right: there are two main methods, one is storing the size at the head and the other is maintaining a hashtable which associates pointer P with size N. Which one is used depends on the compiler. See this for more information.
"The angular velocity in this case is generally thought of as a vector, or more precisely, a pseudovector. It now has not only a magnitude, but a direction as well. The magnitude is the angular speed, and the direction describes the axis of rotation."
in the case of [2,6,7]
sqrt(2^2+6^2+7^2) = 9.43 radians per second, which is very close to 3 rotations per second.
[2,6,7]/9.43 = [0.21, 0.63, 0.74]
So the object is doing about 3 rotations per second clockwise on the [0.21, 0.63, 0.74] axis.
edit: I forgot to comment on the direction of rotation. The rotation is always clockwise. To get a counter-clockwise rotation about a given axis, make a rotation about the negative of that axis. For example, 3 counterclockwise rotations per second about the [0.21, 0.63, 0.74] axis would be expressed as [-2,-6,-7].