This Tic-Tac-Toe game was created for a final project in our NSCC IT PROG2007 Course to demonstrate all we learned in our second semester. The course focused on using C which was quite a change of pace for us since we had primarily programmed in Python.
The goal of the application is quite simple. Create a playable Tic-Tac-Toe game in C and use the command line as an interface. The game contains a simple grid in which the player inputs 2 numbers between 1 and 3 which act as coordinates that the program uses to place X or O in the corresponding cell. The app features a rudimentary AI opponent with multiple difficulties as well as the ability to play with friends in a two-player mode. The game keeps score between rounds to show how well you have been playing.
One skill we developed during our project was using git. We had prior experience working with git in previous semesters, but we hadn't used it for much more than storage. In this project, we often ran into major errors with files that would not save properly for one reason or another. We had to use git's version control in these situations to revert our code to a place where it was easier to work. We also used branches to keep each other's work separate until it was ready to merge. These skills have been useful in many of our later projects.
Because this was one of our first major coding projects, we ran into a lot of issues those who hack away at code might face when working with a bigger scope than they are used to. The project was often filled with scope creep to include features that seemed logical to use but weren't necessary for the project's completion and weren't agreed on during the planning phase of our project. This coupled with descriptive yet sparse amounts of documentation led to a difficult development cycle that led to many late nights sitting in class writing code.
The most important thing this project taught us overall was that we needed to improve our ability to plan out projects beforehand and only start to expand once we had finished the basic requirements.
Despite these flaws in our planning, we as a team are very proud of the final product. Despite the creep we encountered, the features that we added demonstrate that we can create unique features with somewhat simple goals. Overall this project is one that we are proud to display for others to see and use.