A Look Back at an 8-Year-Old 2D Tank Game


A Nostalgic Story
About 8 years ago, when I was just a kid, I began my coding journey with a school book — you know, the classic QBASIC chapter. I learned about variables, conditional statements, and control flow, writing small programs like basic calculators and whatnot.
But then, there was this one section at the end...
How to Draw Shapes in QBASIC Section
That single section changed everything. I learned how to draw rectangles, circles, and all kinds of shapes on the screen.
And then my brain started buzzing with ideas. You know what’s coming next… my very first game.
Starting Work On My Tank Game
If you’re a tech person, you’re probably thinking: “Who the hell makes games in QBASIC?” 😅
Well… an innocent 11-year-old me did.
I didn’t know how to Google things back then (heck, I barely knew what Google was). But somehow, with a school textbook and sheer curiosity, I stumbled into game development. I figured out how to build a game loop, draw stuff on the screen, and even manage inputs — all on my own.
Inspired by the tank game I used to play on my GameBoy, I decided to make my own.
Spoiler: I didn’t get even close.
Drawing Tanks with Boxes and Lines
I started with a rectangle for the tank’s body and drew a line from its center — my improvised gun barrel. Surprisingly, it looked tank-ish.
Then came movement. Instead of making the tank rotate smoothly, I went with a simpler solution: constant velocity. The WASD keys didn’t move it directly — they changed its direction, and the tank kept going. Bullets followed next. And then… I added a dummy opponent to shoot at.
Collisions? Uh-oh.
If you’ve done any game dev, you know this part: collision detection.
Now, imagine being 11 and trying to wrap your head around it without help.
Somehow (don’t ask me how), I managed to build a working collision system.
Bullets could hit the dummy tank, and the game would end. I even added bullet despawning — they’d disappear once they moved off-screen.
The Computer Bot (kinda)
I didn’t write any AI — I wasn’t a genius.
What I did do was… randomize everything.
I generated a random number and mapped it to tank actions. If it was a 3, the bot turned right. If it was a 7, it shot. Absolute chaos. But it worked.
The Chaos
It all sounds fine and dandy when you read it like this (I don’t have the code now), but hell — if you had seen it back then… It was a minefield of GOTO
statements, jumping from line 50 to 553 to who-knows-where.
The variables? Oh, don’t get me started — named things like x
, a4
, and b9
(no one told me you could actually write real names).
Imagine a thousand lines of that. ☠️
Utter. Chaos.
Conclusion
This project… It was buggy, messy, and absolutely hilarious in hindsight — but it was mine.
If you've ever built something as a kid and looked back years later... you know exactly how this feels.
Let’s rebuild it together (Not in QBASIC🙂) — and this time, we’ll do it right.
Next Up: 8 Years Later, The Tank Fires Again
P.S. If you liked this, drop a follow or leave a comment — I’d love to hear your thoughts and connect with fellow devs!
Subscribe to my newsletter
Read articles from Devesh Agarwal directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Devesh Agarwal
Devesh Agarwal
An engineer with a curious mind and a love for systems that go beyond the surface.I enjoy exploring how things work under the hood — whether it's rendering pixels, routing audio, or handling low-level protocols. My work spans across game development, system programming, and occasionally web tech when the problem is worth solving. I’m driven by the desire to build things that are fast, efficient, and just a bit unconventional. This blog is my space to document experiments, challenges, and the weirdly satisfying bugs that teach you more than tutorials ever could. Outside of tech, I enjoy observing how people use technology, and occasionally breaking things just to fix them better.