This is a full implementation of Tic-Tac-Toe, which was completed as my project for my Software Engineering course. The game is fully playable versus an AI opponent and features a cosmetic shop, user login, and different board sizes.
I fully coded the game using Python, designed the user interface, bug tested, and presented this project at the end of my Spring 2025 semester. This project followed weekly instruction that involved learning about the SDLC, different styles of development, accountability in development, software development documentation, and best coding practices.
The first hard requirement for this software was the ability to register a username. This project was limited to what could be done on the local machine, so credentials including a username, password, and player nickname were simply stored in text files on the PC.
The second hard requirement for this software was a system that allowed for logging in and out of the game. The game compares the entered credentials against the program's data and determines whether to alert the user that the username doesn't exist, the password was incorrect, or the login was successful. Once the player has logged in, the main menu features a way to log out and return to the login screen.
The final hard requirement for this project was extensive documentation. A full software development document exists featuring an overview of the software's purpose, a use case diagram, class diagrams, sequence diagrams, a rapid prototype, a user manual, and the program's source code.
An extra feature added into the software is cosmetic items. An in-game currency called "pixels" can be earned through gameplay and achievements. These pixels can be spent on new icons that can be applied to the player and AI icons during gameplay.
As part of the project's soft requirements, the game needed to be able to be differentiated from the source idea. Players are able to choose between the traditional 3x3 board or a new 4x4 board. This also served as an extra passive level of difficulty because the 4x4 board tends to be much harder to win on.
Achievements were an extra feature added in to further differentiate Tic-Tac-Toe+ from the original source. As players complete games, achievements are naturally earned and reward in-game currency. Achievement progress is tied to each user's individual data.
The academic result of this project was an A grade. However, the experience earned over the course of this class was far more valuable than the grade earned. I learned how important it is to document even small changes or fixes. I was also exposed to important software development concepts such as the SDLC and various different types of diagrams that aid with the creation of software.
Overall, this was a challenging assignment, and I feel like I learned a lot from it.