1 Synopsis

Coursework 2 is about maintaining and extending a modern version of classic retro game (Packman). To get started, download zip file "BestPackmanEverV5.zip". The zip file contains only "src" folder, so you have to set up your own JavaFX project in Eclipse and import the src folder. You will be asked to make some changes and additions to the project.

NOTE This coursework is about maintaining and extending existing code. So, for the maintenance part, you have to use the existing code as a basis, and not write your own Pacman game from scratch. 

IMPORTANT Make sure you understand what you are writing in your Javadocs. We reserve the right to briefly interview you if we think that you do not understand what you write about. So, when you write your Javadocs, do not simply copy/paste large portions of text from existing articles or other resources - as this does not demonstrate your understanding of the topic. You might also run into issues with plagiarism. 

You should roughly spend 50 hours on this coursework.

Table 1: Coursework Summary

2 Deliverable

Set up a Git repository on the university’s Git server as PRIVATE (link) and use it for version control activities. The project should be name with "FirstnameLASTNAME-StudentID" for consistency, e.g., RuibinBAI-20031168. PLEASE to be NOTE that the university’s Git server ONLY can be ACCESSED when CONNECTED to eduroam. Follow the instructions ("Add Users to Group") to add two GitLab members "z2019017" and "z2019078" with role permission as "Maintainer" for your coursework assessment.

Four directories (folders) should be created, namely, "src", "documentation", "diagram" and "video".

"src" - Contains all the source codes of the project.
"documentation" - The documentation should be delivered in form of Javadocs. We will mainly look at the Javadocs to find out how you maintained and extended the game. If it is not obvious from there, we might miss it. Also, we have only a limited amount of time to look at each coursework submitted. So, please make sure to provide informative but concise Javadocs.
"diagram" - Provide a high level class diagram in PDF format (landscape orientation is highly recommended for clearer view) that shows the structure of the final version of your game (considering only classes, interfaces, relationships and multiplicity)
"video" - Make a video showing your software in action, demonstrating and explaining its functionality. You could highlight 2-3 achievements you are very proud of in your video.

REPORT A maximum of one page PDF report should be submitted in the Moodle page to provide any brief description of software maintenance you have done especially related to refactoring and additions. You can also highlight any important things that you wish us to pay attention to. Be simple but precise. You should name your report as "cw2-StudentID-report.pdf", e.g., "cw2-20031168-report.pdf". A zip file should be created containing your entire project and submitted as supplementary file. Your project must be able to import into Eclipse using the import wizard. Please name your ZIP (NOT *.RAR or other archive types) file as "cw2-StudentID-project.zip", e.g., "cw2-20031168-project.zip". Failure to adhere to these rules may result in our refusal to mark your coursework.

IMPORTANT The mark and feedback of the coursework will be released in the Turnitin under the report section but assessment will be mainly based on your project in university’s GitLab server. 

3 Plagiarism
You are gently reminded that we are at liberty to use plagiarism detection software on your submission. Plagiarism will not be tolerated, and academic offenses will be dealt with in accordance with UNNC policy and as detailed in the student handbook. This means you may informally discuss the coursework with other students but your submission must be your own. Please also note that it is not permitted for you to copy and paste text from another source without correct referencing. 

4 Assessment

This coursework is worth 100% of this module and as such is marked out of 50. The marks will be split as follows:

[15%] Git Use - Version control? Utilization of Git?

[30%] Refactoring - MVC pattern? Design principles?

[30%] Additions - Interesting features? Creative ideas?

[15%] Documentation - Javadoc? High-level class diagrams?

[10%] Video - Interactive? Presentation quality? Explanations?

NOTE Good programming practice will gain higher marks. Furthermore, nicely presented and easiness of using interfaces will be rewarded. A proportion of the marks will depend on you supplying a working version of your game, and submitting a video of it in use.

5 Task

Do some basic maintenance of the delivered code base, e.g., adding meaningful Javadocs, organizing files in a meaningful way into packages, breaking up large classes in a meaningful way to support the idea of single repository, improving encapsulation etc.

Extend the delivered code base by adding:
A START screen, displaying a picture related to the game and a button that allows going to a SETUP screen.
A START screen: Allowing to choose background and wall colour for the game field (allowing a choice of at least 8 colours) and a button to go back to the START screen.
A high score pop-up, appearing at the end of each round, showing the scores from each round, highest at the top.
Two doors at the side of the play field to allow the pacman and the ghosts to transit between them (leaving at door 1 and immediately re-appearing at door 2 and vice versa) as showed in the Fig. 1

IMPORTANT You need to use Java 8 for the implementation. The project files you are submitting need to be compatible with Eclipse. 


5.1 Tips & Hints

To get higher marks, you can perform some of the tasks as follow in addition to the previous:
Refactor the code by adding some design patterns to enhance maintainability.
Considering organizing the code to adhere to the MVC pattern.
Create a permanent high score list, e.g., using a file to store scores.
Load level descriptions from file and allow running the game with different layouts.
Load proper character figure.
...

6 References

If you use any text or information from any resources such as books, journals, articles, proceedings etc., you have to provide those references. A guide for references and citation can be found here.

Finally, if you have any questions, you are always welcome to post your questions in the forum under the topic Coursework#2-Q&A.

7 Q & A

If you have any questions, kindly utilize the "Q&A Forum" under the topic Coursework#2-Q&A.

REMINDER Make sure you follow strictly the instructions/guideline provided for posting the questions in the forum.