@@ -148,15 +148,91 @@ have a smooth user-interface
\section{Functional Requirements}
\subsection{The Scope of the Work and the Product}
% Summarize Gantt Chart
\subsubsection{The Context of the Work}
%
The scope of the project is deliver a Product that has the requirement documentation, and a desktop application that can be installed on a user's system.\\
\\To achieve the goals of the Product, the following are decided to be the deadlines of the goal to be on the track:\\
\\$\bullet$ Revise all the Documentation \date{13/11/18}\\
\\$\bullet$ Final Documentation \date{06/12/18}\\
\subsubsection{Work Partitioning}
%breakdown your task into sub-task e.g. break logic and user interface
The desktop application involves different processes to successfully run: making a user-interface so the user can interact with the application, the logic behind the user-interface that can handle all the inputs given by the user and outputs the result according to the requirements.
These tasks can be divided into sub-task. For example, the system uses the microphone as an input, so whenever the sake completes a functional requirement (the requirements are described below) it will output an audio to make the game much more interesting. Another example would be, the movement of the snake and it get larger would be done by the logic at the back-end and its output will be displayed on the screen so the user can continue playing.
Tasks such as displaying the food, making snake appear at random locations in the beginning, etc. should all be divided and can be worked individually as this would more efficient to complete and the developer would know how to test these functions.
When the user sees the interface it can start the game by pressing any button key.\\
Rationale: If the user presses any button and the game does not work as it is expected to be.\\
$\bullet$ Requirement number: FR2 \\
User's can press F11 key to play the desktop application in Full screen mode.\\
$\bullet$ Requirement number: FR3\\
The user can press the UP key to move the snake's direction in the upwards direction.\\
$\bullet$ Requirement number: FR4\\
The user can press the DOWN key to move the snake's direction in the downwards direction.\\
$\bullet$ Requirement number: FR5\\
The user can press the LEFT key to move the snake's direction in the left direction.\\
$\bullet$ Requirement number: FR6\\
The user can press the LEFT key to move the snake's direction in the right direction.\\
$\bullet$ Requirement number: FR7\\
The game should display the user's highest score.\\
$\bullet$ Requirement number: FR8\\
The initial location of the snake should be random whenever the user starts the game or when it restarts.\\
$\bullet$ Requirement number: FR9\\
The user has the option to play in three different modes: easy, medium and hard.\\
$\bullet$ Requirement number: FR10\\
The game should display the user's highest score.\\
$\bullet$ Requirement number: FR11\\
The desktop application provides a facility to toggle in different themes, e.g. Dark to Light.\\
$\bullet$ Requirement number: FR12\\
The desktop application provides a facility to toggle in different themes, e.g. Dark to Light.\\
$\bullet$ Requirement number: FR13\\
When the snake eats its food its length should be increased by 5 units. For instance, when the game is started and the snake's length is only 1 unit, but after eating a block of food its new length should be 6 units.\\
$\bullet$ Requirement number: FR14\\
By pressing the spacebar key the game should be paused.\\
$\bullet$ Requirement number: FR15\\
By pressing the spacebar key the game should be resumed, only if the game was paused initially.\\
$\bullet$ Requirement number: FR16\\
Snake's food should be randomly placed on the screen in the beginning of the game, once the snake eats its food, the food should reappear on the screen.\\
$\bullet$ Requirement number: FR17\\
The snake is allowed to move around in a certain space, if the snake crosses that space it should die and a message should prompt on the screen to restart the game.\\
$\bullet$ Requirement number: FR18\\
If the snake bites itself, the game should be over and a message should prompt on the screen to restart the game.\\
$\bullet$ Requirement number: FR19\\
If the user is successful in making the snake eat 10 food units consecutively, a food unit with more value should be displayed on the screen that would give the snake more points but will increase its length with the same amount, as previously stated.\\
$\bullet$ Requirement number: FR20\\
The snake should change its colour when it dies.\\