So, I have been doing C++ for about a year now, and I do know what is made with C++. But, I just need advice. Now that I have learned all the basics (most, at least), I want to make a goal. What is good for a beginner to make, meaning what should I make first? Game? Art program? Word Processor? WEB BROWSER??? Okay, maybe not a web browser... I have no idea where to start with that. Oh, and are there any books on advanced programming skills (I don't mean advanced like polymorphism, I know how to do that. Are there any SUPER advanced skills I should learn?)? I know a teeny bit of windows, so I may need to learn that first. I know javascript, html, css, if that helps. Please help me with this... I am getting sick of console applications. Any advice would be EXTREMELY appreciated.
I definitely suggest learning Win32 programming. There are a few free tutorials from Microsoft that can teach you to create a basic window application.
Get into doing things involved in graphics/file io/etc.
Create a basic game loop:
1. create display
2. show display
3. pump messages
4. update game (step time frame)
a. update graphics
b. update gameobjects (paddles,pucks)
c. update gamecollisions (physics)
d. update the score
e. update ai
5. if object.score == WINNING_SCORE, then goto step 6
else go back to step 3.
6. exit game
7. play again? goto step 3.
8. free all objects
9. close/destroy gamewindow
Create A Pong game.
Create basic graphics
a window
title
position
dimension
a background (texture)
a surface (buffer to render to the window)
Give the Pong game 3 areas and 2 objects
a board (rectangle)
2 score zones (rectangle)
2 paddles (player and npc) (rectangles)
Make the Pong game handle basic Physics.
reverse the direction of the puck IF the puck collides with an object/edge/surface
apply basic speed to the puck s = v/t (acceleration is optional = vel = s/t = v/(t^2))
Give the Pong game an AI Character (npc)
the npc should handle the logic including collision detection
Give the Pong game a scoreboard
the scoreboard should track 2 scores
the player score
the npc score
Give the Game logic
if a game actor gets a certain number of points, then they win
if the player wins, give them the option of restarting the game.
Challenge:
Learn how to use fstream/ofstream/ifstream to read/write files. Store a scoreboard
list which tracks the results of previous games between players and npcs.
Know what you want to do first, then execute.
I hope this helps. But if you can implement the above, then you are at least a basic programmer, especially if you use Java or Python to implement it. Java provides (for better or worse) a giant library such that you can plug your brain into the api and develop versus creating from nearly nothing (synthesis).
Teach yourself to do that with just WIN32 and you will be ready for more things.
I understand that you may feel like console applications are keeping you inside a box, and limit your development, which is why you want to use C++ to create something more flashy and visual.
Just remember, console applications too can be challenging and interesting. Of course, I'm not talking about console "games", I'm talking about console utilities. There is purity in a console utility: you can focus on the logic more than on the GUI. The utility can be written in pure C++ and so it will also be quite portable from one OS to another.
i was stuck on the console for a little longer than a year when i first started. don't regret it at all, learned about detailed functions such as strlen,strcpy,strcat,memswap,memcpy. Learned all about variables, control structures, metaprogramming, virtual inheritance, inline assembly (trivial), polymorphism, data structures, file io, file formatting, direct x, imageprocessing, winapi, a tiny bit of opengl, etc. Maybe not in that order. I took a slow, yet headfirst approach and It has provided me good knowledge. But time to capitalize suckaz!
Also the reason why int argc, char* argv[] are parameter to the main driver provided me an iq boost of at least 2 points :} Because then I finally understood what the purpose of programming was; you feed it your data from a source if produces output.