What it does
For my final CS246 project on Object Oriented Programming, I worked in a team of 3 students to build a modified version of the "Settlers of Catan" board game. It included a text-based user interface and command line user inputs to play the game.
How I built it
We first planned the entire game with a UML diagram and a project timeline. We then distributed the workload evenly amongst all team members and began coding our specific features using C++ on separate github branches. We implemented numerous design patterns such as the MVC model, Observer, Iterator, and Factory. We also implemented file I/O to help build the user interface as well as using a Graph data structure to store the internal state of the game. To reduce memory leaks, we used RAII principles to ensure best practises were implemented.
Challenges I ran into
It was particularly challenging to work on this project in a group as all three group members were in different countries and time zones. It was very difficult to schedule calls where the whole team can come together and work on the project. Instead, we learnt how to split the work such that there are little dependancies on other people's code. We also made an efficient communication platform using Discord so that all queries and discussions were organized. Lastly, we kept our documentation updated so that everyone has a single source of truth document to refer to for information on other people's functions and classes.
What's next for Constructor
In the future, we would love to add a graphical user interface to the project. However, given that it was a final project, we did not have enough time to improve the user interface. We would also like to add additional features such as a computer player who can replace human players. This would be very interesting to code.
Note
As this is a final project, I am not allowed to share the code publicly. However, if interested, I can share the github repository with individuals as allowed by university policy.

Log in or sign up for Devpost to join the conversation.