In this challange, I will deal with the task of writing two games at once. The games will share some of the design, modules and behavior but will act as a seperate project altogether. The shared components will have to be general and reuseable and in the same time implement as much of the game-specific functionality as possible.
Both of these classic games are pretty much comprised of the same mechanics: a deck of shuffled cards which has to be re-organized into 4 stacks of ascending-same-suit cards. In the course of the games cards are needed to be arranged also in ascending order, however in a stack of alternatly-changing red/black order.
Learning from the Minesweeper Speed Challange I decided to start the design process with Use-Cases. There will be a single Use-Case document for both of the games defining the common Use-Cases in a joined section and the specific Use-Cases in a seperate section. This time, I plan to follow this stage with a Class-Diagram that will contain each of the processes defined in the Use-Case document and by the GUI.
The solution file will also consist out of three projects: Solitaire, FreeCell and the Common Assembly that will contain the features that are common to both games as defined in both the Use-Case and the Class Diagram. The common assembly is to be written so that it will be able to be re-used in a (possible) future project without any modification.