ITECH2309 Software Engineering Assignment 2
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
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
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
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
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