What We Actually Learned (And Where to Go Next)By now, the game is complete. Not just playable — but structured, understandable, and extendable. So instead of adding more features, this final part is about stepping back and understanding what this project really taught us. Because the most import...Dec 21, 2025·4 min read
Shooting, Bullets, and Simple ProjectilesSo far, we have a cannon that can move left and right.That’s good, but it’s still harmless. In this part, we’ll fix that. By the end of this part, the player will be able to: press a key to shoot see bullets move up the screen manage multiple bull...Dec 21, 2025·4 min read
Coordinates, Movement, and Your First PlayerUp to now, our program has structure.It runs in a loop, handles input, and renders at a fixed speed. Now it’s time to put something inside that loop that actually moves. Before we jump into enemies and shooting, we need to understand positions and mo...Dec 20, 2025·4 min read
The Game Loop (Making the Program Run Like a Game)Up to now, our program can react to input, but it still doesn’t really behave like a game. It reacts when a key is pressed, but nothing happens otherwise. Games don’t work like that. A game is always running.Input is just one small part of it. To get...Dec 20, 2025·4 min read
Handling Keyboard Input in ncursesIn the previous part, our program could print text, but it couldn’t really do anything. In this part, we’ll change that. We’ll learn how to: read keyboard input using ncurses detect special keys like arrow keys avoid blocking the program while wai...Dec 20, 2025·3 min read
Getting Started with ncurses in C++This is the first part of my terminal game development series. Why the Terminal? You might be wondering why we would build a game that runs in a terminal when we can simply pick a graphics library and make something that looks much better. The reason...Dec 20, 2025·4 min read