Introduction

This coursework is worth 25% of the module mark. It requires you to write a C++ program that solves the task described below. 

Read the entire document before beginning the exercise.

If you have any questions about this exercise, please ask in the Q&A forum on Moodle, after a lecture, in a lab, or during the advertised office hours. Do not post your program or parts of your program to Moodle as you are not allowed to share your coursework programs with other students. If any questions require this exercise to be clarified then this document will be updated and everyone will be
notified via Moodle.

Task

Your task is to write a C++ program that implements a game. The hard constraints for the game include:
       1. It must use fuzzy string comparison (the algorithm you have developed in CW2 for example).
       2. It must use C++ object oriented programming techniques.
       3. It must allow input from user(s) (by means of keyboard or mouse).

       4. It must show results (win, lose or tie).

You can use either Linux X2Go or Windows Visual Studio to develop your game. Code developed on other platforms must compile on one of them. Graphic interface is NOT compulsory.

Submission

You must submit a zip file that contains a report and all your code for this exercise. The code files should compile and run without warning and error messages on either X2Go or Visual Studio. 

In your report, you should clarify on what platform your program compiles and runs. You should explain details of your game, including the game rules, the number of players, how to play, win/lose conditions, and so on. There should be an UML model showing the hierarchy of classes used in your game. You should evaluate how well the given requirements are fulfilled.

Late submissions: Late submissions will lose 5 percentage points per hour, rounded up to the next whole hour. No late submissions will be accepted more than 24 hours after the exercise deadline. If you have extenuating circumstances you must file them before the deadline.

Marking

The marking scheme will be as follows:

Tests (20% or 5 marks): Your program should satisfy the hard requirements.

           As noted in the submission section, if your program does not compile then you will lose all testing marks.

Satisfaction of soft constraints (60% or 15 marks):

              Does the program use C++ object oriented techniques correctly?
              Is the program readable and contains appropriate comments?
              Does the game contain sufficient complexity?
              Does the game contain any simple AI?
              Is the game of high level of playability?
Report (20% or 5 marks):
             Description of your game
             Game rules
             UML expression of classes involved
             Explain how well the requirements are fulfilled

Plagiarism

You should complete this coursework on your own. Anyone suspected of plagiarism will be investigated and punished in accordance with the university policy on plagiarism (see your student handbook and the University Quality Manual). This may include a mark of zero for this coursework.

You should write the source code required for this assignment yourself. If you use code from other sources (books, web pages, etc), you should use comments to acknowledge this. You must not copy or share source code with other students. You must not work together on your solution. You can informally talk about higher-level ideas but not to a level of detail that would allow you all to create the same source code.

Remember, it is quite easy for experienced lecturers to spot plagiarism in source code. We also have automated tools that can help us identify shared code, even with modifications designed to hide copying. If you are having problems you should ask questions rather than plagiarize. If you are not able to complete the exercise then you should still submit your incomplete program as that will still get you some of the marks for the parts you have done (but make sure your incomplete solution compiles and partially runs!).

If I have concerns about a submission, I may ask you to come to my office and explain your work in your own words.