John Corkrend wrote:
Whenever I try to learn from a book or youtube video I lose interest as it seems boring.
I ultimately want to program some games, starting with something simple like shapes on screen then moving on. But I know that I need a solid understanding of the basics before I attempt game programming.
Paul Clapham wrote:
It does help if you have a goal in mind, for example a program which you want to write. Then you can take bits from various tutorials and use them while you're developing various aspects of that program.
Jeff Verdegan wrote:
John Corkrend wrote:
Whenever I try to learn from a book or youtube video I lose interest as it seems boring.
I ultimately want to program some games, starting with something simple like shapes on screen then moving on. But I know that I need a solid understanding of the basics before I attempt game programming.
Paul Clapham wrote:
It does help if you have a goal in mind, for example a program which you want to write. Then you can take bits from various tutorials and use them while you're developing various aspects of that program.
The boredom will come. No matter how interested you are in programming--or in anything for that matter--there will be parts of the learning process that are difficult, repetitive, tedious, and just not fun in general. In the end, if you want to get good at something, you'll have no choice but to gut through those times. Having said that, though, what Paul is saying is great advice, and if you do it right, it can take the edge off the boredom
.
So let's say you want to make a game like Minecraft. Writing "Hello World" and printing out the numbers from 1 to 100 and their squares is not even remotely close to that. You're going through these tutorials, gutting it out, thinking, "When do I get to do something even remotely interesting?" In the very beginning, it will be difficult or impossible to relate the exercises for the basic concepts to your goal in any meaningful way. At some point, though, there will be enough pieces that you can put them together to make something that's relevant to what you're ultimately trying to produce.
Maybe after you learn the basics of objects and constructors and member variables and console I/O, you can create a small app that has a bare minimum number of features that Minecraft has. A single Character, maybe 5 Locations, and maybe 5 Tools. (I don't really know Minecraft--I just kind of watch my kid play, so forgive any incorrect game terminology).
You have a simple game flow and simple console I/O. The 5 Locations are conceptually arranged in a line, one after the other, and the Character can only move forward or backward. Each Location has one Tool. If he moves forward, he picks up the Tool at the new Location. If he moves backward, he drops it. At each move, you print out where he is, what he's carrying, and what his options are (forward, backward, or both).
Done. That's it.
With that simple app, you can play around and study different ways of doing various things, and combine several concepts. And while it's a far cry from the real Minecraft game, it at least gives you a peek at some of the building blocks that might go into such an app. And since you already know how the game is supposed to behave, you can readily judge the correctness of your program and the progress you're making toward your ultimate goal.
Maybe the next pass he can carry a max of 3 tools, and once his hands are full, he can choose to drop one (Any one? First picked up only? Last picked up only?) and pick up another. Can he drop multiple tools in one location, or can each location only hold one tool?
As you learn more concepts--both Java and general CS--you can add characters, expand your map, make the play more sophisticated, etc.