ITECH 2309 Software Engineering
Develop a GUI based game of “Rock, Paper, Scissors” in JAVA using good software design and coding principles, practices and methodology. This is an individual assignment.
Timelines and Expectations
Percentage Value of Task: 25% of course
Due: 11:55pm Friday Week 11
Minimum time expectation: 20 hours
About Rock, Paper, Scissors
Rock, Paper, Scissors is a game between two players, in which players use their hands to model one of the following:
· Rock, modelled by a hand closed into a fist
· Paper, modelled by a flat hand facing palm down.
· Scissors, modelled by a fist with the two fingers closest to the thumb outstretched to make a ‘V’ shape.
Players raise and lower a closed fist on each count of one and two. On the count of three, players raise their hand, and then both lower their hand at the same time to disclose their modelled selection. The items chosen by the players to model are then compared to determine a winner, based on the logic:
· Rock beats Scissors
· Paper beats Rock
· Scissors beat Pape
· Equal selections are a tie and get replayed.
Completing these sequence results in a round of Rock, Paper, Scissors. Usually players opt for the best of three, in which three rounds are played and the player with the highest score at the end of the three rounds wins. Sometimes players may opt for the first to 3 or another chosen number, in which game play continues until one player reaches the agreed upon total of wins. Players are able to change their selected item for each throw, but it is considered poor form (and even cheating) to change your selection while you are in the process of throwing it.
There are several variations of the game given it has been played by word of mouth for many, many years, but the basic principles remain the same. A video demonstrating one example is available here: https:
A more advanced variation of the game was discussed on the TV series “The Big Bang Theory”, being Rock, Paper, Scissors, Lizard, Spock. You can view a discussion of this here: https:
Your task is to implement Rock, Paper, Scissors as a GUI-based Java game, using Eclipse. You may choose any recognized variation, including Rock, Paper, Scissors, Lizard, Spock, providing you clearly describe the rules for the variation you implement. As this is a two player game, a human will play against the computer. The computer’s throw must be chosen at random each turn – it is not allowed to cheat!
The GUI will have an Initialisation Window that allows the player to enter their name and configure the game. This includes setting how many rounds will occur, as well as any other customizations for your variation. An example of an Initialisation Window is shown below, although you are welcome to change how this appears and add more functionality to suit your particular game.
Sample Initialisation Window
The main game window will display the two parties competing (i.e. the named player and the computer), the number of rounds to be played and the cu
ent number of wins allocated to each player. It will include an option for the player to enter their throw each round, and a button to place the throw. When this button is clicked, the computer’s random selection will be displayed. The winner of the round will be identified, and a tally of each player’s wins displayed. At the end of the designated number of rounds, the overall winner is identified.
Sample Main Game Window
You are expected to use good design and coding principles and practices learned in lectures, including implementing applicable design patterns. Bad smells in code and design should be avoided as much as possible. You are expected to refactor your code, and establish automated testing using Junit to run unit and regression testing of your code. You are expected to test each functionality you add thoroughly 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 covers:
· An overview of the game describing all functionality that has been implemented
· How game is designed and implemented
· Roles of design patterns in the game, clearly identifying the functionality where design patterns have had an impact and how this has occu
· Class diagram of the game showing all classes (concrete and abstract) and interfaces using Enterprise Architect.
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 separately.
Assignment will be marked and returned within two weeks of submission. Lecturer will discuss
oad 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. More information about the plagiarism policy and procedure for the university can be found at http:
CRICOS Provider No. 00103D
ech2309 - assignment 2 - s2 2020