Assignment 4
COMP SCI 2ME3, SFWR ENG 2AA4
March 20, 2018
Assigned: March 22, 2018
Spec and Code: April 9, 2018
Last Revised: March 20, 2018
All submissions are made through git, using your own repo located at:
https://gitlab.cas.mcmaster.ca/se2aa4 cs2me3 assignments 2018/[macid].git
where [macid] should be replaced with your actual macid. The time for all deadlines is
11:59 pm.
1 Introduction
The purpose of this assignment is to design and specify a module (or modules) to store
the state of a game of Freecell. The modules cover the Model portion of the Model View
Controller design pattern. The rules for Freecell can be found at the following web-page:
https://www.freecell-solitaire-download.com/rules.html
A sample implementation can be found at:
http://www.cardgamesolitaire.com/freecell.php
Your assignment is for the module that stores the state of the game board and the
status of the game. You do not need to worry about modules that display graphics, or
control the game play, etc.
1
Your speci cation should be written using LaTeX. All of your code should be written
in C++. All code les, except for testing les, should be documented using doxygen.
Your test code should use catch, version 2.
Part 1
Step 1
Submit your design speci cation, written in LaTeX, of the MIS for the game state module.
If your speci cation requires additional modules, you should include their MISes as well.
It is up to you to determine your modules interface; that is, you decide on the exported
constants, access programs, exceptions etc. You also determine your state variables and
specify the semantics for your access program calls. Your design does not need to concern
itself with performance.
Part 2
Step 2
Submit C++ code that matches the speci cation given in the previous step. You should
also submit code that tests your module(s) using catch 2. Document your source code
using doxygen. You code should include a make le, with rules make test and make doc.
Performance will not be considered in the grading.
Notes
1. Your git repo is organized with the following directories at the top level: A1, A2, A3,
and A4. Your speci cation and code les should be placed in the A4 folder
2. Please put your name and macid at the top of each of your source les.
3. Your program must work in the ITB labs on mills.
4. Any changes to the assignment speci cation will be announced in class.
It is your responsibility to be aware of these changes. Please monitor all
pushes to the course git repo.
2