The goal of this project is to demonstrate basic mastery of the design, creation, and implementation of a moderately sized C++ project. You will have your choice of two projects.
You should be able to complete this assignment in less than 10-hours of teamwork over a two week period. You are expected to meet regularly and work as a team of two and meet the requirements outlined in this document.
● The program should be properly divided into functions.
● The program should use at least two preferably three or more classes.
● All program logic needs to be encapsulated within the object. main() should only instantiate the object and start the game.
● It should follow all coding style and comment guidelines.
● It should maximize code reusability (avoid cut-paste-modify but instead make code reusable if possible)
● Program compiles cleanly without warnings
● Program executes properly without crashing ● Program solves the problem as outlined.
● The program should have a help option
You are not expected to make a “clone” of these games. Use them instead for inspiration. Show your creativity.
Project Requirements
No matter the project you choose, all projects have a single base requirement. Each project must utilize the concept of structures/classes and object-oriented programming in some manner. The specific requirements for each project are as follows:
Game of Life:
1. The game must be able to import a set of initial settings from a text file to seed the game.
2. The user should be able to modify the rules to the game in some manner, even if it’s minor.
3. The game must be continuously displayed to the user as the cells in the grid turn on/off.
Solitaire:
1. The user should be able to restart the game at any point once it’s started.
2. The user should always be able to see the entire status of the game at all times, including how many cards are face down in each pile and how close they are to winning.
3. If the user gets into a situation where it is impossible to win, the game should notify them that they’ve lost.
Chess:
1. Once the game starts, the board should always be displayed to the user(s).
2. The game should be played by two players. AI can be used for the second player, but is not necessary.
3. The game must notify the user(s) when his/her king has been put in check, and prevent any possible moves that would keep his/her king in check. If there are no available moves to the player to prevent the king from being in check, the other player wins.
Project Milestones
○ For the Game of Life, the conceptual layout includes how you plan to incorporate object-oriented programming into the project, how you plan to format your initial parameters, how the user is able to manipulate the rules of the game, and how you plan on displaying the grid to the user.
○ For Solitaire, the conceptual layout includes how you plan to gui incorporate object-oriented programming into the project, how you plan on displaying the game status to the user, how you plan on allowing the user to interact with the game, and how you plan on tracking if the user has won/lost.
○ For Chess, the conceptual layout includes how you plan to incorporate object-oriented programming into the project, how you plan on allowing the user(s) to interact with the game, how you plan on tracking the check status of each players’ king piece, and if you plan on using AI, how you plan to implement it.