Develop a GUI based game of “SIMON” in JAVA using good software design and coding principles, practices and methodology. This is an individual assignment.
SIMON is a computerized memory game, released in 1978, played using a small device with four coloured buttons. Each button has its own different colour and associated tone. Players attempt to memorise and repeat an increasingly long sequence of colours / tones as selected by the device. The sequence starts with just one button, and each time the player successfully repeats the sequence, an additional button is randomly added to the sequence.
You can play an online version of the game here: https://www.memozor.com/simon-games/simon-game
Your task is to implement SIMON as a GUI-based Java game, using Eclipse.
The GUI must have one main game window which will display a version of the game device. The appearance of this can be customized, provided it has four different coloured buttons for the sequences and a Start button that the player will press when they are ready for the game to begin. It will also include the player’s current score (initially 0), and the high score for this session of the game. When the game is playing the sequence, the player must not be able to press any of the buttons.
After implementing the standard gameplay, add a Configuration Window that allows the player to alter the game settings. This includes accepting a player’s name and using this to present a “high scores” ladder, allowing the initial speed of the game to be varied, and allowing the number of buttons in the initial sequence to be set to a number between 0 and 5.
In developing your game, you must adhere to good design and coding principles and practices as covered in lectures. For example:
· Design patterns must be implemented where appropriate; for example, you need to use the State Pattern to ensure that players are not able to press buttons when the game is playing the sequence.
· Bad smells in code and design should be avoided as much as possible. You are expected to refactor your code.
· You must implement automated testing using Junit to run unit and regression testing of your code. You are expected to thoroughly test each behaviour you add for exception handling, positive results, negative results, boundary conditions etc., and provide test cases and results with your submission.
You are also required to document a report that includes:
· An overview of the game describing all functionality that has been implemented
· How the game is designed and implemented, with a supporting class diagram created in Enterprise Architect covering all classes and interfaces and their relations.
· A discussion of how design patterns have been used in the game, clearly identifying where design patterns have been used and to what purpose.
You are required to submit:
· A ZIP file containing all code files including Unit tests, and an Enterprise Architect file of the class diagram.
· Individual Report
Please refer to marking guide provided in the appendix.
Assignment will be marked and returned within two weeks of submission. Lecturer will discuss broad issues in the lecture and tutors will give individual feedback in the lab sessions
Plagiarism is the presentation of the expressed thought or work of another person as though it is one's own without properly acknowledging that person. You must not allow other students to copy your work and must take care to safeguard against this happening.