Create a game for sync solution
February 16, 2017
Abstract
The document consists of set of visual representations created using software engineering principles that would aid in the understanding of the project
The Jeopardy Game
Design and Analysis
Contents
Table of figures: 2
1.Introduction: 3
2.Requirements specification and analysis: 3
2.1.Functional Requirements: 3
2.2.Actors: 3
2.3.Use Case Diagrams: 4
2.3.1.Use Case Diagram for Administrator: 4
2.3.2.Use Case Diagram for Player: 5
2.4.Use Case Specifications: 5
2.4.1.Administrator use cases: 5
2.4.2.Player use cases: 6
2.4.3.Use case specifications for Administrator: 7
1.4.4.Use Case Specifications for Player: 12
1.5.Database: 23
1.5.1.Entity relationship: 23
1.5.2.Tables and attributes detail: 24
1.6.Non-functional Requirements: 26
1.6.1.Sequence Diagram for Administrator: 26
1.6.2.Class Diagram: 34
1.6.3.Analysis Class Diagram: 35
Table of figures:
Figure 1: Use Case Diagram for Administrator 4
Figure 2: Use Case Diagram for Player 5
Figure 3: Entity relationship diagram 23
Figure 4: Administrator Sign In 26
Figure 5: Administrator Game Settings 27
Figure 6: Administrator Sign Out 28
Figure 7: Player Sign In 29
Figure 8: Player View High Scores 30
Figure 9: Player Start Game 31
Figure 10: Player Display Your Best Score 32
Figure 11: Player Answer Bonus Question 33
Figure 12: Player Sign Out 34
Figure 13: Class Diagram 35
- Introduction:
‘JEOPARDY’ is the America’s favorite Quiz Show. The purpose of this project is to develop a computerized version of the show using the software engineering design principles studied. The computer game will be covering up all most every segment of the real-life game show.
- Requirements specification and analysis:
- Functional Requirements:
There must be 13 categories of the questions
There must be 3 rounds in the game
Round 1 (“JEOPARDY!”) must have six categories
Round 2 (“DOUBLE JEOPARDY!”) must have six categories
Final round (“FINAL JEOPARDY!”) must have 1 category
Each category must have 5 sets of questions
Each question set must have increasing difficulty and points
At the start of the game players must be able to enter the name to show their unique identity
Questions must not repeat during the gameplay
Each question must be timed
Each round must be timed
Scores must be saved
High scores and the names of those who have achieved high score must be displayed at the beginning of the game
Points must be subtracted for each wrong answer
In the final round of the game, the players must be allowed to bet
The game must include the random “DAILY DOUBLES”
Round 1 must have one “DAILY DOUBLES”
Round 2 must have two “DAILY DOUBLES”
If question with the “DAILY DOUBLES” is answered correctly, the points double the amount of the question should be added to the players score
Final round should have only one question
Player should be able to raise the bet to the question, if the player has answered correctly, double the amount of the raised bet should be added to the players’ score
The questions must be fetched from the database based on the players’ selection of round category and per the difficulty
- Actors:
The real-life jeopardy game has two main actors, ‘the player, one who is selecting difficulty and answering the show’ and ‘the presenter, the one who is hosting the show’. Similarly, the computerized version of the TV game show will have the following actors:
Player: As the name suggests, will be responsible of playing the game, selecting the questions and difficulty
Administrator: Will be the one who can add and update the time for each question and can change the amount for question. Administrator will also be able to add new questions which can be randomly fetched from the database later.
- Use Case Diagrams:
The use case diagram will help in understanding the interactions between the actors and the system. It will help in identify and arrange the system requirements.
- Use Case Diagram for Administrator:
Figure 1: Use Case Diagram for Administrator
- Use Case Diagram for Player:
Figure 2: Use Case Diagram for Player
- Use Case Specifications:
- Administrator use cases:
- Use Case Specifications:
Sign in
Game settings
Add questions
Update questions
Sign out
- Player use cases:
Sign in
View high scores
Start
Play rounds
Play round 1
Play round 2
Play final round
Restart
Display your best score
Answer bonus question
Sign out
- Use case specifications for Administrator:
Use case: Sign in |
Id: UC-1 |
Brief description: The administrator can use credentials such as the password and username to sign in to the administrator interface |
Primary actors: Administrator |
Secondary actors: None |
Pre-condition(s): User is an admin; the jeopardy game is running on the system and the credentials user entered must match with the ones stored in database |
Main flow:
|
Post-condition(s): Administrator signed in successfully |
Alternative flows: Upon entering the wrong credentials the user will be asked to enter the credentials again |
Use case: Game settings |
Id: UC-2 |
Brief description: The administrator can add and update the questions from this interface |
Primary actors: Administrator |
Secondary actors: None |
Pre-condition(s): User is an admin; the jeopardy game is running on the system and the administrator is signed in |
Main flow:
|
Post-condition(s): Game settings menu displayed successfully |
Alternative flows: None |
Use case: Add questions |
Id: UC-3 |
Brief description: The administrator can add questions from this interface |
Primary actors: Administrator |
Secondary actors: None |
Pre-condition(s): User is an admin; the jeopardy game is running on the system and the administrator is signed in |
Main flow:
|
Post-condition(s): Question added successfully |
Alternative flows: If any field of the form is left empty, the system will prompt the user to enter the details and then save the question |
Use case: Update questions |
Id: UC-4 |
Brief description: The administrator can update questions from this interface |
Primary actors: Administrator |
Secondary actors: None |
Pre-condition(s): User is an admin; the jeopardy game is running on the system and the administrator is signed in |
Main flow:
|
Post-condition(s): Question updated successfully |
Alternative flows: If any field of the form is left empty, the system will prompt the user to enter the details and then save the question |
Use case: Sign out |
Id: UC-5 |
Brief description: The administrator can sign out |
Primary actors: Administrator |
Secondary actors: None |
Pre-condition(s): User is an admin; the jeopardy game is running on the system and administrator is signed in |
Main flow:
|
Post-condition(s): Administrator signed out successfully |
Alternative flows: None |
- Use Case Specifications for Player:
Use case: Sign in |
Id: UC-1 |
Brief description: The player can use credentials such as the password and username to sign in to the player interface |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and the credentials user entered must match with the ones stored in database |
Main flow:
|
Post-condition(s): Player signed in successfully |
Alternative flows: Upon entering the wrong credentials the user will be asked to enter the credentials again |
Use case: View high scores |
Id: UC-2 |
Brief description: The player can view high scores |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and the user is signed in |
Main flow:
|
Post-condition(s): High scores displayed successfully |
Alternative flows: None |
Use case: Start |
Id: UC-3 |
Brief description: The player start the game |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and the user is signed in |
Main flow:
|
Post-condition(s): Game started successfully |
Alternative flows: None |
Use case: Play rounds |
Id: UC-4 |
Brief description: The player start the game and play a round |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and the user is signed in |
Main flow:
|
Post-condition(s): Rounds started successfully |
Alternative flows: None |
Use case: Restart |
Id: UC-5 |
Brief description: The player can restart a round |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and the user is signed in |
Main flow:
|
Post-condition(s): Game restarted successfully |
Alternative flows: None |
Use case: Play round 1 |
Id: UC-6 |
Brief description: The player can play round 1 |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and the user is signed in |
Main flow:
|
Post-condition(s): Round 1 started successfully |
Alternative flows: None |
Use case: Play round 2 |
Id: UC-7 |
Brief description: The player can play round 2 |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and the user is signed in |
Main flow:
|
Post-condition(s): Round 2 started successfully |
Alternative flows: If user has not completed round 1 then a pop up notifies that the user must complete the round 1 first to play round 2 |
Use case: Play final round |
Id: UC-8 |
Brief description: The player can play final round |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and the user is signed in |
Main flow:
|
Post-condition(s): Final round started successfully |
Alternative flows: If user has not completed round 1 and round 2 then a pop up notifies that the user must complete the round 1 and round 2 first to play final round |
Use case: Display your best score |
Id: UC-9 |
Brief description: The player can view his/her best score |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and the user is signed in |
Main flow:
|
Post-condition(s): User’s best score displayed successfully |
Alternative flows: If the user has no previous best score, he/she will be notified using a pop up window |
Use case: Answer bonus question |
Id: UC-10 |
Brief description: Player can play a special feature i.e. ‘answer bonus question’ to achieve bonus score |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and the user is signed in |
Main flow:
|
Post-condition(s): Bonus question answered (played by the ‘jeopardy computer game player) |
Alternative flows: None |
Use case: Sign out |
Id: UC-11 |
Brief description: The player can sign out |
Primary actors: Player |
Secondary actors: None |
Pre-condition(s): User is a player; the jeopardy game is running on the system and player is signed in |
Main flow:
|
Post-condition(s): Player signed out successfully |
Alternative flows: None |
- Database:
- Entity relationship:
- Database:
Figure 3: Entity relationship diagram
- Tables and attributes detail:
Questions: The table with have the data related to the questions added by the database and further it will also have the information that which question has been appeared how many times, to manage the question repetition.
Question ID: It is the primary key for the questions table, as each question will be different from each other, each question will be having a unique ID which will be of data type ‘integer’
Category ID: The category ID is the foreign key from the table categories.
Choice 1: Choice 1 is the first option which player can select as an answer, the data type will be ‘varchar’.
Choice 2: Choice 2 is the second option which player can select as an answer, the data type will be ‘varchar’.
Choice 3: Choice 3 is the third option which player can select as an answer, the data type will be ‘varchar’.
Choice 4: Choice 4 is the fourth option which player can select as an answer, the data type will be ‘varchar’.
Answer: It is the actual answer of the question; the data type will be ‘varchar’.
Appearance Flag: For each question a flag count is being maintained so that repetition can be tracked.
Difficulty ID: It is the foreign key referenced from the difficulties table.
Difficulties: The table consists of the difficulty levels for a question and the scores associated with each difficulty
Difficulty ID: It is the primary key for the difficulties table; data type is ‘integer’
Difficulty Name: This column has names of each difficulty; type ‘varchar’
Difficulty Score: This is the score for each difficulty; type ‘integer’
Users: The table contains data of all the users of the ‘jeopardy game’
User ID: It is the primary key for the uses id table; data type ‘integer’
Player ID: It is the foreign key referenced from the player table; data type ‘integer’
Username: It is the name of the user; data type ‘varchar’
User Type: It is the type of the user; data type ‘varchar’
Password: This column has the password for every user; data type ‘varchar’
Categories: The categories which are used in the game are in this table
Category ID: It is the primary key attribute for the category id table; data type ‘integer’
Category: It is the name of a category; data type ‘varchar’
Player: The player table has all the player information as stated follows
Player ID: It is the primary key in the players table, every player of the game will have the unique player ID; data type ‘integer’
User ID: The user ID is foreign key from the users table; data type ‘integer’
Player name: This column has the name of the player; data type ‘varchar’
Player e-mail: This column has the e-mail of the players; data type ‘varchar’
Score: This is the score for an individual player; data type ‘integer’
Scores: Contains the scores for the players
Score ID: This will have the unique ID for each score of a player; data type ‘integer’
Player ID: The player ID is the foreign key referenced from the Players table; data type ‘integer’
Round: The contains the round number so that we can keep track of the score for each round of an individual player; data type ‘varchar’
Score: This is the actual score; data type ‘integer’
- Non-functional Requirements:
- Sequence Diagram for Administrator:
Administrator Sign In - SD1:
Figure 4: Administrator Sign In
Administrator Game Settings – SD2:
Figure 5: Administrator Game Settings
Administrator Sign Out– SD3:
Figure 6: Administrator Sign Out
Player Sign In – SD4:
Figure 7: Player Sign In
Player View High Scores – SD5:
Figure 8: Player View High Scores
Player Start Game – SD6:
Figure 9: Player Start Game
Player Display Your Best Score – SD7:
Figure 10: Player Display Your Best Score
Player Answer Bonus Question – SD8:
Figure 11: Player Answer Bonus Question
Player Sign Out – SD9:
Figure 12: Player Sign Out
- Class Diagram:
Figure 13: Class Diagram
- Analysis Class Diagram:
Sr. no | Member | Description |
User | ||
-userId:int | Responsible for storing user id | |
-playerId:int | Responsible for storing player id | |
-userName:string | Responsible for storing username | |
-userType:string | Handles user type | |
-password:string | Contains user password | |
+getUserInfo():string | Gets the user information including name, e-mail etc. | |
+setUserInfo():void | Saves the user information | |
Player | ||
-playeId:int | Responsible for storing player id | |
-userId:int | Responsible for storing user id | |
10 | -playerName:string | Responsible for storing player name |
11 | -playerEmail:string | Responsible for storing player e-mail |
12 | -score:int | Contains player score |
13 | +getPlayerInfo():string | Gets player information |
Administrator | ||
14 | -adminId:int | Responsible for storing administrator id |
15 | -userId:int | Responsible for storing user id |
16 | -adminName:string | Responsible for storing the admin name |
17 | -adminEmail:string | Contains admin e-mail |
18 | -adminPassword:string | Has admin password |
19 | +getAdminInfo():string | Fetches the administrator data |
Game Menu | ||
20 | -playerName:string | Contains player name |
21 | -round:int | Contains round number |
22 | -scores:int | Contains all the scores |
23 | -appearanceFlag:int | To maintain the check for question repetition |
24 | -difficultyId:int | Responsible for storing the difficulty id |
25 | -question:string | Contains the question |
26 | -bonusQuestion:string | Contains the bonus question |
27 | +signIn():void | To sign in to the game |
28 | +startGame():void | To start the game |
29 | +getHighScore():string | To view the high scores |
30 | +getBestScore():string | To view the personal best score |
31 | +addScore():void | To save the score after each question |
32 | +subtractScore():void | To deduct the score if failed to answer the question correctly |
33 | +startNextRound():void | To progress towards the next round |
34 | +answerBonusQuestion():void | To answer the bonus question for extra points |
35 | +raiseBet():void | To raise the bet for the final round |
36 | +signOut():void | To sign out of the game |
37 | +exitGame():void | To exit the game |
Questions | ||
38 | -categoryID:int | Contains the unique id of the category |
39 | -question:string | Contains the question |
40 | -choice1:string | Contains the choice one for the question |
41 | -choice2:string | Contains the choice two for the question |
42 | -choice3:string | Contains the choice three for the question |
43 | -choice4:string | Contains the choice four for the question |
44 | -answer:string | Contains the answer for the question |
45 | -appearanceFlag:int | To maintain the repetition log |
46 | -difficultyId:int | Contains the difficulty id of the question |
47 | +getQuestion():string | To get the first question of the round |
48 | +getNextQuestion():string | To get the next question |
Scores | ||
49 | -scoreId:int | Contains unique score id |
50 | -playerId:int | Contains unique player id |
51 | -round:int | Has the round number |
52 | -score:int | Contains score |
53 | +getScore():void | To view the score |
54 | +setScore():void | To save the score |
Difficulties | ||
55 | -difficultyId:int | Contains the difficulty id |
56 | -difficultyName:string | Contains the difficulty name |
57 | -difficultyScore:int | Contains the score associated with each difficulty |
58 | +getDifficultyInfo():string | To fetch the difficulty information |
Questions | ||
59 | -questionId:int | Has the question id |
60 | -question:string | Has the actual question |
61 | +signIn():void | To sign in to the settings menu |
62 | +addQuestion():void | To add a question |
63 | +viewQuestions():string | To view a questions list |
64 | +updateQuestion():void | To update a question |
65 | +signOut():void | To sign out |