From c0e89fc8865a4fab50789b5285de03a54df88e28 Mon Sep 17 00:00:00 2001 From: bgambocjaviniar Date: Sun, 9 Feb 2020 19:35:40 -0500 Subject: [PATCH] final version and check in CI --- documents/iteration1/main.tex | 441 ++++++++++++++++++++++------------ 1 file changed, 286 insertions(+), 155 deletions(-) diff --git a/documents/iteration1/main.tex b/documents/iteration1/main.tex index 07dd9a4..8d8b98d 100644 --- a/documents/iteration1/main.tex +++ b/documents/iteration1/main.tex @@ -88,11 +88,29 @@ \section{System} \subsection{Purpose} -This Software Requirements Document describes the specifications of the Kakuro puzzle game, which is in partial fulfillment of the requirements of COMP 354 - Introduction to Software Engineering. It will define the requirements of user interfaces, user stories, game mechanics and how the software should work. The requirement analysis will include a use case diagrams and a domain model diagram to describe the problem domain of the application. It will also identifies non-functional requirements and hardware/software constraints. It also provides a glossary to formally describes key concepts involved in the project. This document is designed for Team Pk-A. [2] +This Software Requirements Document describes the specifications of the Kakuro puzzle game, which is in partial fulfillment of the requirements of COMP 354 - Introduction to Software Engineering. It will define the requirements of user interfaces, user stories, game mechanics and how the software should work. The requirement analysis will include a use case diagrams and a domain model diagram to describe the problem domain of the application. It will also identifies non-functional requirements and hardware/software constraints. It also provides a glossary to formally describes key concepts involved in the project. This document is designed for Team Pk-A [1]. \\ + +There are three plannings to our project: software requirements, architectural and detailed design specification, and implementation. Following the due dates, we will complete our deliverables as listed below. + +\begin{center} +\setlength{\tabcolsep}{20pt} +\renewcommand{\arraystretch}{2} +\begin{tabular}{ |p{4cm}|p{4cm}|p{4cm}| } +\hline +Project Plan & Deliverable & Date \\ +\hline +Software requirements specification & A requirements document & Sunday 9 February 2020 \\ +\hline +Architectural and detailed design specification & A design document & Sunday 15 March 2020 \\ +\hline +Implementation & Test plan, report, and final game & Sunday 5 April 2020 \\ +\hline +\end{tabular} +\end{center} \subsection{Context} -The software we are building is a requirement for our `Introduction to Software Engineering` class to show our acquired knowledge for software development. The requirements to the maintenance of the software will be taken into account as these are the fundamentals of development. We will be interchanging roles for three iterations and to expose ourselves to different kind of view points of expertise in the field. +The software we are building is a requirement for our Introduction to Software Engineering course to show our acquired knowledge for software development. The requirements to the maintenance of the software will be taken into account as these are the fundamentals of development. We will be interchanging roles for three iterations and to expose ourselves to different kind of view points of expertise in the field. \subsection{Business Goals} @@ -100,9 +118,9 @@ \subsection{Business Goals} \newpage -\section{Domain Model} +\section{Domain Concepts} -The domain model of the Kakuro application consists of players, games, cells, game progresses and saved white cells. A player can play one game at a time. Each game contains cells. There are two types of cells. Black cells represent non-fillable cells. Some of them contain clues about the puzzle which it belongs to. White cells are cells in which players can enter a number from 0 to 9 inclusively. A player can also save a game that is currently being played. The saved game progress includes the elapsed time, and any prior input that the player has entered. +The domain model of the Kakuro application consists of players, games, cells, game progresses and saved white cells. A player can play one game at a time. Each game contains cells. There are two types of cells. Black cells represent non-fillable cells. Some of them contain clues about the puzzle to which it belongs. White cells are cells in which players can enter a number from 1 to 9 inclusively. A player can also save a game that is currently being played. The saved game progress includes the elapsed time, and any prior input that the player has entered. \begin{figure}[htbp] \includegraphics[width=1\textwidth]{DomainModel} @@ -114,14 +132,15 @@ \section{Domain Model} \section{Actors} -Players are the only actors for this application. They are users who can play the game. They can register and login. Moreover, they can interact with the graphical user interface by starting the game, viewing overall scores of other players, as well as their personal scores. Finally, they have the ability to choose the difficulty and pause/resume when they need to. +Players are the only actors for this application. They are users who can play the game. They can register and login. Moreover, they can interact with the graphical user interface by starting the game, viewing overall scores of other players, as well as their personal scores. Finally, they have the ability to choose the difficulty, pause and resume a game when they need to. +As this is only the first iteration, the players are currently `anonymous` users, therefore anyone can play the game without registering. \newpage \section{Use Cases} \subsection{Overview} -Our use case diagram represents our use cases and features that we will be implementing for the Kukuro game. As a player, they can normally start the game, pause, resume, or restart. Furthermore, they are able to save their progress and load it at any point of time. Also, the player is able to view other player's high-score, as well as choosing the level of difficulty. +Our use case diagram represents the use cases and features that we will be implementing for the Kukuro game. As an actor, players can normally start the game, pause, resume, or restart. Furthermore, they are able to save their progress and load it at any point of time. Also, the player is able to view other player's high-score, as well as choosing the level of difficulty. \begin{figure}[htbp] \centering @@ -160,7 +179,7 @@ \subsection{Use Case 1 - Start game} \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] \item The player clicks on the start button - \item A Kakuro game is displayed. All white cells of the game is empty. + \item A new Kakuro game is displayed \item The timer starts \end{enumerate} \\ \hline @@ -176,11 +195,38 @@ \subsection{Use Case 1 - Start game} \hline Priority & High \\ \hline - \small{\small{Traces to Test Cases}} & Add when test cases done \\ + \small{Traces to Test Cases} & + Current unit test(s): \textbf{TestBoardUI, TestBoard} \newline + Please refer to it below + \\ \hline \end{tabular} \end{center} +\textbf{TestBoardUI - testBoardUIGeneration()} + +\textit{Description:} \newline +The board's user interface is generated \newline + +\textit{Input:} \newline +Takes an integer number for rows and columns, 3 and 5 respectively. \newline + +\textit{Expected results:} \newline +The desktop application game can be seen and ready to be played with the given rows and columns. \newline +\\ + +\textbf{TestBoard - testSize()} + +\textit{Description:} \newline +The board has a size \newline + +\textit{Input:} \newline +Takes an integer number of 10 for both rows and columns. \newline + +\textit{Expected results:} \newline +The game has a size with the given rows and columns. \newline +\\ + \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%% USE CASE 2 @@ -232,11 +278,49 @@ \subsection{Use Case 2 - Submit answer} \hline Priority & High \\ \hline - \small{Traces to Test Cases} & Added when test cases done \\ + \small{Traces to Test Cases} & Current unit test(s): \textbf{TestBoard} \newline + Please refer to it below + \\ \hline \end{tabular} \end{center} +\textbf{TestBoard - testValidBoard()} + +\textit{Description:} \newline +Validating if the board does not accept the inputs as a solved solution. \newline + +\textit{Input:} \newline +Valid inputs are being put in the board. \newline + +\textit{Expected results:} \newline +The input values solved the board, which returns true. \newline +\\ + +\textbf{TestBoard - testNotValidBoardOneSumIsWrong()} + +\textit{Description:} \newline +Validating if the board does not accept the inputs as a solved solution. \newline + +\textit{Input:} \newline +Invalid inputs are being put in the board. \newline + +\textit{Expected results:} \newline +The input values does not solve the board, which returns false. \newline +\\ + +\textbf{TestBoard - testNotValidBoardCorrectSumDuplicateEntries()} + +\textit{Description:} \newline +Validating if the board does not accept duplicate entries in the same row or column \newline + +\textit{Input:} \newline +Duplicate inputs are being put in the board. \newline + +\textit{Expected results:} \newline +The input values does not solve the board, which returns false. \newline +\\ + \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%% USE CASE 3 @@ -253,7 +337,7 @@ \subsection{Use Case 3 - Restart game} \hline Name & Restart game \\ \hline - Summary & The game restarts the current game. All the white cells will be return to empty and the timer will reset \\ + Summary & The game restarts the current game. All the white cells will be returned to empty and the timer will reset \\ \hline Actors & Player \\ \hline @@ -349,13 +433,13 @@ \subsection{Use Case 5 - Input number} \begin{center} \setlength{\tabcolsep}{18pt} \renewcommand{\arraystretch}{1.3} -\begin{tabular}{ |p{3.4cm}|p{10cm}| } +\begin{tabular}{ |p{3.4cm}|p{12cm}| } \hline \textbf{Item} & \textbf{Description} \\ \hline Name & Input number \\ \hline - Summary & The player chooses a white cell and enter a number from 0 to 9 (inclusive) \\ + Summary & The player chooses a white cell and enters a number from 1 to 9 (inclusive) \\ \hline Actors & Player \\ \hline @@ -384,7 +468,7 @@ \subsection{Use Case 5 - Input number} Exceptions & \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] - \item The player chooses a white cell + \item The player chooses a black cell \item The player enters a letter \end{enumerate} \\ \hline @@ -396,11 +480,87 @@ \subsection{Use Case 5 - Input number} \hline Priority & High \\ \hline - \small{Traces to Test Cases} & Add when test cases done \\ + \small{Traces to Test Cases} & Current unit test(s): \textbf{TestBoardCell, TestGameViewInput} + \newline + Please refer to it below + \\ \hline \end{tabular} \end{center} +\textbf{TestBoardCell - testNonInputCell()} \\ + +\textit{Description:} \newline +Verify that non-input cells are EMPTY cells \newline + +\textit{Input:} \newline +Using a EMPTY cell type as a board cell \newline + +\textit{Expected results:} \newline +The non-input cells is an EMPTY cell, which is truthy. +\newline +\\ + +\textbf{TestBoardCell - testInputCell()} \\ + +\textit{Description:} \newline +Verify a cell's first value has the correct input, as well as being an EMPTY cell. \newline + +\textit{Input:} \newline +Populates a cell's first value with an integer. \newline + +\textit{Expected results:} \newline +The EMPTY cell is truthy and has a first value. \newline +\\ + +\textbf{TestBoardCell - testInputAnswerCell()} \\ + +\textit{Description:} \newline +Verify that a cell type is EMPTY with a left and right number. \newline + +\textit{Input:} \newline +Passing two numbers with an EMPTY cell. \newline + +\textit{Expected results:} \newline +The EMPTY cell has two integer values. \newline +\\ + +\textbf{TestGameViewInput - testValidInputNumber()} + +\textit{Description:} \newline +Validating the input number is a valid number from 1-9. \newline + +\textit{Input:} \newline +Input values are from 1-9. \newline + +\textit{Expected results:} \newline +The valid inputs are truthy as it ranges from 1-9. \newline +\\ + +\textbf{TestGameViewInput - testValidInputNumber()} + +\textit{Description:} \newline +Validating the input number is an invalid number which is not from 1-9. \newline + +\textit{Input:} \newline +Input values is a string. \newline + +\textit{Expected results:} \newline +The input values are falsy as it is not wihin the 1-9 range. \newline +\\ + +\textbf{TestGameViewInput - testInvalidInputString()} + +\textit{Description:} \newline +Validating the input number is an invalid number which is not from 1-9, but a string \newline + +\textit{Input:} \newline +Input values is a string. \newline + +\textit{Expected results:} \newline +The input values are falsy as it is not a integer. \newline +\\ + \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%% USE CASE 6 - Pause game @@ -446,11 +606,26 @@ \subsection{Use Case 6 - Pause game} \hline Priority & Medium \\ \hline - \small{Traces to Test Cases} & Add when test cases done \\ + \small{Traces to Test Cases} & Current unit test(s): \textbf{TestChrono} + \newline + Please refer to it below + \\ \hline \end{tabular} \end{center} +\textbf{TestChrono - testRunStopChronoAfter3Seconds()} + +\textit{Description:} \newline +Verify the pause stops the timer. \newline + +\textit{Input:} \newline +Presses the pause button to stop the timer for incrementing. \newline + +\textit{Expected results:} \newline +Asserts that the timer was paused after 3 seconds. \newline +\\ + \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%% USE CASE 7 - Resume game @@ -544,7 +719,7 @@ \subsection{Use Case 8 - Login} \hline Priority & Low \\ \hline - \small{Traces to Test Cases} & Added when test cases done \\ + \small{Traces to Test Cases} & Add when test cases done \\ \hline \end{tabular} \end{center} @@ -553,7 +728,7 @@ \subsection{Use Case 8 - Login} %%%%%%%%%%%%%%%%%%%%%%%%%%%%% USE CASE 9 - Register player -\subsection{Use Case 9 - Register player} +\subsection{Use Case 9 - Register} \begin{center} \setlength{\tabcolsep}{18pt} @@ -563,7 +738,7 @@ \subsection{Use Case 9 - Register player} \textbf{Item} & \textbf{Description} \\ \hline - Name & Register player \\ + Name & Register\\ \hline Summary & The player registers and makes their account \\ \hline @@ -578,9 +753,9 @@ \subsection{Use Case 9 - Register player} Main Scenario & \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] - \item The user clicks the register button - \item The user registers by inputting username and password - \item The user gets their own account + \item The player clicks the register button + \item The player registers by inputting username and password + \item The player gets their own account \end{enumerate} \\ \hline Alternate Scenario & None \\ @@ -588,7 +763,7 @@ \subsection{Use Case 9 - Register player} Exceptions & \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] - \item Username and password are not following the validations + \item The username that the player entered already exists \item The second password input doesn't match the first one \item Username and password are too weak \end{enumerate} \\ @@ -601,7 +776,7 @@ \subsection{Use Case 9 - Register player} \hline Priority & Low \\ \hline - \small{Traces to Test Cases} & Added when test cases done \\ + \small{Traces to Test Cases} & Add when test cases done \\ \hline \end{tabular} \end{center} @@ -621,7 +796,7 @@ \subsection{Use Case 10 - Save game} \hline Name & Save game \\ \hline - Summary & The Player is able to save the current progress \\ + Summary & A player saves the game that is currently being played \\ \hline Actors & Player \\ \hline @@ -637,7 +812,8 @@ \subsection{Use Case 10 - Save game} \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] \item The player pressed the save button - \item The current progress is saved in player's account + \item The current progress (time and inputs) is saved in player's account + \item The game quits \end{enumerate} \\ \hline Alternate Scenario & None \\ @@ -647,21 +823,22 @@ \subsection{Use Case 10 - Save game} Postcondition & \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] - \item The game is quit + \item The progress of the game played by the player is saved + \item The game quits \end{enumerate} \\ \hline Priority & Low \\ \hline - \small{Traces to Test Cases} & Added when test cases done \\ + \small{Traces to Test Cases} & Add when test cases done \\ \hline \end{tabular} \end{center} \newpage -%%%%%%%%%%%%%%%%%%%%%%%%%%%%% USE CASE 11 - View the best score +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% USE CASE 11 - Load the game -\subsection{Use Case 11 - View best times} +\subsection{Use Case 11 - Load game} \begin{center} \setlength{\tabcolsep}{18pt} @@ -670,51 +847,49 @@ \subsection{Use Case 11 - View best times} \hline \textbf{Item} & \textbf{Description} \\ \hline - Name & View best times \\ + Name & Load game \\ \hline - Summary & A player can view the best times. The scoreboard displays the top 10 fastest time to complete a game \\ + Summary & A player loads a saved game \\ \hline Actors & Player \\ \hline Precondition & \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] - - \item No game is in progress - + \item The player has logged in + \item There exists a game previously saved by the player \end{enumerate} \\ \hline Main Scenario & \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] - \item The player pressed the view best times button - \item The player views the scoreboard which displays the best times - + \item The player clicks on the load button + \item The system checks that the player has saved a game previously + \item The game that the player was playing previously is displayed. All white cells which were filled by the player when the game was saved are filled with the same value \end{enumerate} \\ - \hline - Alternate Scenario & None \\ + \hline + Alternate Scenario & None \\ \hline Exceptions & None \\ \hline Postcondition & \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] - \item Quit the game - \item Start a game + \item The game that the player previously saved is loaded \end{enumerate} \\ \hline - Priority & Medium \\ + Priority & Low \\ \hline - \small{Traces to Test Cases} & Added when test cases done \\ + \small{Traces to Test Cases} & Add when test cases done \\ \hline \end{tabular} \end{center} \newpage -%%%%%%%%%%%%%%%%%%%%%%%%%%%%% USE CASE 12 - Load the game +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% USE CASE 12 - View the best score -\subsection{Use Case 12 - Load game} +\subsection{Use Case 12 - View best score} \begin{center} \setlength{\tabcolsep}{18pt} @@ -723,39 +898,37 @@ \subsection{Use Case 12 - Load game} \hline \textbf{Item} & \textbf{Description} \\ \hline - Name & Load game \\ + Name & View best score \\ \hline - Summary & A player loads a saved game \\ + Summary & A player can view the best score. The scoreboard displays the top 10 fastest players and the time for each of them to complete a game. \\ \hline Actors & Player \\ \hline Precondition & \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] - \item The player has logged in - \item There exists a game previously saved by the player + + \item No game is in progress + \end{enumerate} \\ \hline Main Scenario & \vspace*{-0.1in} \begin{enumerate}[leftmargin=0.2in] - \item The player clicks on the load button - \item The system checks that the player has saved a game previously - \item The Kakuro game that is the same as the saved game is shown to the player - \item White cells that are filled previously are filled with the same value as the previous game. + \item The player pressed the view best score button + \item The scoreboard is displayed + \item The player views the scoreboard which displays the top 10 fastest players and the time for each of them to complete a game + \item The user closes the scoreboard + \end{enumerate} \\ - \hline - Alternate Scenario & None \\ + \hline + Alternate Scenario & None \\ \hline Exceptions & None \\ \hline - Postcondition & - \vspace*{-0.1in} - \begin{enumerate}[leftmargin=0.2in] - \item The game that the player previously saved is loaded - \end{enumerate} \\ + Postcondition & None \\ \hline - Priority & Medium \\ + Priority & Low \\ \hline \small{Traces to Test Cases} & Add when test cases done \\ \hline @@ -766,49 +939,30 @@ \subsection{Use Case 12 - Load game} \section{Non-Functional Constraints} -\subsection{Game Mechanism} +\subsection{Business Constraints - Game Mechanism} -In Kakuro, each puzzle consists of black cells with clues that need to be solved by the empty white cells. The objective is to fill all empty white cells using numbers from 1 to 9. Each number can only used once for a clue in both vertical and horizontal white cells. The sum of each horizontal black cell must equal the clue on its left. Similarly the sum of each vertical cell must equal the clue on its right. [1] +The business constraints for the application is that it must enforce the rules of a classic Kakuro game. In Kakuro, each puzzle consists of black cells with clues that need to be solved by the empty white cells. The objective is to fill all empty white cells using numbers from 1 to 9. Each number can only used once for a clue in both vertical and horizontal white cells. The sum of each horizontal black cell must equal the clue on its left. Similarly the sum of each vertical cell must equal the clue on its right [2]. \subsection{Software Requirements} -\textbf{Constraints — Application:} -\begin{itemize} - \item Standalone JAVA application - \item JAVA Swing GUI - \item SQLite DB or text files for data storage -\end{itemize} - -\textbf{Constraints — Work Environment:} -\begin{itemize} - \item Java as the programming language - \item Eclipse as the integrated development environment (IDE) - \item JUnit for unit testing in Java - \item Draw.io for UML modeling - \item Git software repository for team on GitHub and version control - \item Latex for documentation -\end{itemize} - -\vspace{5mm} - -The application constraints consist of making Kakuro a standalone java application, which can launched in any operating system due to the compilation being in the Java Virtual Machine (JVM). Secondly, the software must be built using Java Swing as a Graphical User Interface (GUI), and finally, it should have a database that runs in SQLite. +The application constraints consist of making Kakuro a standalone java application, which can launched in any operating system due to the compilation being in the Java Virtual Machine (JVM). Secondly, the software must be built using Java Swing as a Graphical User Interface (GUI), and finally, it should have a database that runs in SQLite [3]. \vspace{5mm} -The work environment constraints restrict the application to be written in Java with JUnit for unit testing. Diagrams and especially Unified Modeling Language (UML) to be drawn in draw.io. Coupled with GitHub as our software repository and git as version control. Finally, all documentation must be written in Latex. +The work environment constraints restrict the application to be written in Java with JUnit for unit testing. Diagrams and especially Unified Modeling Language (UML) to be drawn in draw.io. Coupled with GitHub as our software repository and git as version control. Finally, all documentation must be written in Latex [3]. \subsection{Non-Functional Requirements} -\textbf{Reliability}: It is vital that the Kakuro game is error free throughout the game because the players might be bothered by constant errors and would not enjoy fully the game. +\textbf{Reliability}: It is vital that the Kakuro game is error-free to provide a smooth and satisfying game play experience to players. \vspace{5mm} -\textbf{Maintainability}: The design of the Kakuro project will be in a modular form which will allow many developers to work on different modules simultaneously. Documentation will be expanded in order to simplify upcoming modification to the code. +\textbf{Maintainability}: The design of the Kakuro application will be in a modular form which will allow many developers to work on different modules simultaneously and shorten debugging time. The modules should be designed in such a way that reduces coupling and dependencies. Code should be documented clearly and concisely to support knowledge transfer. \vspace{5mm} -\textbf{Usability}: The graphical user interface must be agreeable to the eye, organized and intuitive to -use. This will attract the user to play. +\textbf{Usability}: The graphical user must be pleasant to the eye, organized and intuitive to +use. This will encourage the user to play and improve user experience overall. \newpage @@ -823,11 +977,12 @@ \section{User Interface} \begin{figure}[htbp] \centering \includegraphics[scale=0.8]{UI-1.png} - \caption{KAKURO Start Menu} + \caption{Kakuro Start Menu} \label{fig:UI-1} \end{figure} -After clicking on the start button, a game will begin. Figure 4 proposes a prototype for the gameplay user interface. In this interface, the black cells represent non-fillable cells. Black cells that have bars contain clues. The clues situate on the left or right of the bar. They hint the players for the sum of the corresponding column or row. The white cells are empty slots, where a number from 0 to 9 can be entered in each cell by the player. The interface also contains buttons to pause the game, submit the answer, and save the current game. +\newpage +After clicking on the play button, a game will begin. Figure 4 proposes a prototype for the gameplay user interface. In this interface, the black cells represent non-fillable cells. Black cells that have bars contain clues. The clues situate on the left or right of the bar. They hint the players for the sum of the corresponding column or row. The white cells are empty slots, where a number from 1 to 9 can be entered in each cell by the player. The interface also contains buttons to pause the game, submit the answer, and save the current game. \begin{figure}[htbp] \centering @@ -836,7 +991,8 @@ \section{User Interface} \label{fig:UI-0} \end{figure} -When the player submits a correct attempt, a menu is displayed informing the player that the game is completed successfully. Now the player can view the best score of all time, restart the game, or quit the game by clicking on the corresponding button. Figure 5 describes the game completed interface. +\newpage +When the player submits a correct attempt, a menu is displayed informing the player that the game is completed successfully. Now the player can view the best play records, restart the game, or quit the game by clicking on the corresponding button. Figure 5 describes the game completed interface. \begin{figure}[htbp] \centering @@ -845,6 +1001,10 @@ \section{User Interface} \label{fig:UI-2} \end{figure} +\newpage +When a wrong solution is submitted the game will display that the solution was incorrect. The player will then have the option to resume the game and try again, restart the game or quit the game. Figure 6 describes the menu when a wrong solution is displayed. + + \begin{figure}[htbp] \centering \includegraphics[scale=0.8]{UI-3.png} @@ -853,7 +1013,7 @@ \section{User Interface} \end{figure} -When a wrong solution is submitted the game will display that the solution was incorrect. The player will then have the option to resume the game and try again, restart the game or quit the game. Figure 6 describes the menu when a wrong solution is displayed. +Figure 7 describes what the scoreboard will look like. The player will be able to look through the list of 10 fastest players and their best records. The scoreboard will consist of usernames and the associated times. \begin{figure}[htbp] \centering @@ -862,103 +1022,74 @@ \section{User Interface} \label{fig:UI-4} \end{figure} -Figure 7 describes what the scoreboard will look like. The player will be able to look through the list of 10 fastest times to complete a game. The scoreboard will consist of usernames and the associated times. + \newpage \section{Glossary} -\textbf{Player} -\vspace{5mm} -\begin{itemize} - \item Player is the user that will engage in the game and interact with the interface. -\end{itemize} - -\vspace{5mm} - -\textbf{Game} +\textbf{Account}\\ +The account is a record relating to the player. It will contain the saved game progress of the player. When the player will logins in, they will have access to their data. \vspace{5mm} -\begin{itemize} - \item It is a round of the Kakuro game. The player will launch it and play. The game end when the player submits their answer -\end{itemize} +\textbf{Best score}\\ +High score consist of personal or overall scores of players based on how fast they completed the game. \vspace{5mm} -\textbf{Account} +\textbf{Clue} \\ +A clue is a number displayed in a black cell. The clue hints players about the total sum of a row or column. \vspace{5mm} -\begin{itemize} - \item The account is a record relating to the player. It will contain the saved game progress of the player. When the player will logins in, they will have access to their data. -\end{itemize} +\textbf{Cell} \\ +A cell is either a black cell or a white cell. A black cell contains 'clues' that situates on the left or right of the backslash. The white cell are empty slots, where numbers are placed. \vspace{5mm} -\textbf{Grid} +\textbf{Database}\\ +A data storage that organized and keep information that runs on SQLite. \vspace{5mm} -\begin{itemize} - \item The grid will have a static size of 10x10, which consist of white and black cells. The black cells fills the first row and first column entirely. -\end{itemize} +\textbf{Game}\\ +It is a round of the Kakuro game. The player will launch it and play. The game end when the player submits their answer \vspace{5mm} -\textbf{Cell} +\textbf{Game Progress}\\ +The state of the game that the player saved. It contains the amount of time that has passed and all the numbers that the user entered. \vspace{5mm} -\begin{itemize} - \item A cell is either a black cell or a white cell. A black cell contains 'clues' that situates on the left or right of the backslash. The white cell are empty slots, where numbers are placed. -\end{itemize} +\textbf{Grid}\\ +The grid will have a static size of 10x10, which consist of white and black cells. The black cells fills the first row and first column entirely. \vspace{5mm} -\textbf{Best score} +\textbf{Player}\\ +Player is the user that will engage in the game and interact with the interface. \vspace{5mm} -\begin{itemize} - \item A high score consist of personal or overall scores of players based on how fast they completed the game. -\end{itemize} +\textbf{Solution}\\ +A solution is the correct answer to a Kakuro puzzle. A solution consists of a specific combination of numbers with specific positions in the puzzle. For our Kakuro application, there is a unique solution to each game. \vspace{5mm} -\textbf{Timer or Time} +\textbf{Saved White Cell}\\ +A saved white cell stores the player's input from a saved game. \vspace{5mm} -\begin{itemize} - \item A timer represents the number of times left to complete the game before losing the score. -\end{itemize} - -\vspace{5mm} - -\textbf{Database} -\vspace{5mm} -\begin{itemize} - \item A data storage that organized and keep information that runs on SQLite. -\end{itemize} - -\vspace{5mm} - -\textbf{Game Progress} -\vspace{5mm} -\begin{itemize} - \item The state of the game that the player saved. It contains the amount of time that has passed and all the numbers that the user entered. -\end{itemize} - -\vspace{5mm} - -\textbf{Saved White Cell} -\vspace{5mm} -\begin{itemize} - \item The saved white cell contains the player's input. -\end{itemize} +\textbf{Timer or Time}\\ +A timer represents the number of times left to complete the game before losing the score. \vspace{5mm} \newpage \section{References} - -[1] Wikipedia, Kakuro, last edited on 18 December 2019, at 09:11 (UTC). \\ -https://en.wikipedia.org/wiki/Kakuro - \vspace{5mm} -[2] Monopoly - Project Analysis and Development Plan Version 1.3 \\ -Team Redmond on 30 September 2003 +[1] Team Redmond, Monopoly - Project Analysis and Development Plan Version 1.3\\ +https://users.encs.concordia.ca/~paquet/wiki/images/6/67/Phase1final.pdf (Accessed: February 9, 2020) + +[2] Wikipedia, Kakuro\\ +https://en.wikipedia.org/wiki/Kakuro (Accessed: February 9, 2020) + +[3] Gregory Butler, Term Team Project Description +Kakuro\\ +https://users.encs.concordia.ca/~gregb/home/PDF/comp354\_w2020\_project\_description.pdf (Accessed: February 9, 2020)\\ \setlength{\parindent}{10ex}