It’s officially Day 84, and I’ve found myself back in the text console. What was meant to be a straightforward exercise in logic quickly spiraled into a deep dive into three-dimensional grid thinking and advanced terminal aesthetics.
Building on the foundation of Day 82, I wanted to see how far I could push the Rich package. It’s a library that transforms the humble console from a scrolling wall of text into a formatted, professional interface. It turns out that with the right mix of panels, rules, and prompts, you can make a terminal feel less like a command line and more like a modern application.
Then there’s the "brain" of the operation: the Matrix Engine. I decided to power the 3x3 grid using NumPy. You could argue that using a high-performance numerical library for Tic-Tac-Toe is like using a chainsaw to cut your morning toast—and you’d be right. However, it provided an incredibly elegant way to handle win states. Instead of writing endless loops, I could verify vertical, horizontal, and diagonal matches with simple, vectorized array checks.
The project wasn't without its "pixel-perfect" hurdles. I insisted on using ❌ and ⭕ emojis for the tokens, only to discover they occupy twice the width of standard characters. It sent me down a rabbit hole of spacing logic and dynamic padding to ensure the grid didn't collapse or wobble every time a player made a move.
I also took the opportunity to streamline the user interaction. By integrating Rich’s Prompt system, I managed to offload the heavy lifting of data validation. It handles the "idiot-proofing"—checking for valid integers and available squares—in a fraction of the code I would have written manually.
Right now, the game is a polished local multiplayer experience. But in the spirit of never knowing when to stop, I’m already looking toward the next revision: a single-player mode powered by the Minimax algorithm. The goal is to build an AI that doesn't just play, but plays perfectly.