# 1 Introduction
[NULL]

## 1.1 Purpose
This specification establishes the requirements for the product named Qheadache. The intended audience is the analyst, programmer, and tester of Qheadache.

## 1.2 Scope
The product is a computerized game that displays an interface used to solve a specific headache.

## 1.3 Product overview
[NULL]

### 1.3.1 Product perspective
The product runs as a stand-alone application. It requires a keyboard and a mouse for user interaction and a graphical display of at least 800x600 resolution. The product uses the Qt graphical library and must run on all operating systems that Qt supports.

### 1.3.2 Product functions
- Undo and redo the last thousand actions.
- Count and display the time spent playing.
- Count and display the number of user actions.
- Record and display scores associated with the user's name.
- Display a window with all the player's scores.

### 1.3.3 User characteristics
No specific qualifications are necessary. The users can range from a beginning level player starting at age 8 to an advanced level player who could be an adult.

### 1.3.4 Limitations
- The software must be portable to the Windows OS.
- There can be only one user per machine.

## 1.4 Definitions
[N/A]

# 2 References
[N/A]

# 3 Requirements
[NULL]

## 3.1 Functions
### 3.1.1 Actions
- **Undo and Redo Actions**: The user can undo and redo the last thousand actions.
- **Time Tracking**: The product must count and display the time that the user uses to play.
- **Action Count**: The product must count and display the number of the user's actions.
- **Score Recording**: The product must record the score (time and number of actions) of a play associated with the name of a user.
- **Score Display**: The product must display a window with all the player's scores.

### 3.1.2 External Interfaces
- **User Interfaces**: The main window shall provide a board and a menu bar.
- **Hardware Interfaces**: Requires a mouse and a keyboard for input. Other pointing and input devices are allowable if they provide similar functions.
- **Software Interfaces**: Uses the Qt graphical library.

### 3.1.3 Functional Requirements
- **Board Presentation**: The board is a rectangular zone where the user can move blocks.
- **Block Selection and Movement**: Users can select, deselect, and move blocks.
- **End of Game Management**: The game ends when the great square is moved to the bottom of the board.
- **Statistics Management**: Records player statistics such as the number of block movements and time since the start.
- **File Management**: Includes opening, saving, and exiting the game.

## 3.2 Performance requirements
- The product must support only one user per machine.

## 3.3 Usability requirements
[N/A]

## 3.5 Logical database requirements
[N/A]

## 3.6 Design constraints
- The software must be portable to the Windows OS.

## 3.7 Software system attributes
- **Portability**: The software must be portable to the Windows OS.

## 3.8 Supporting information
[N/A]

# 4 Verification
[NULL]

## 4.1 Functions
[N/A]

## 4.2 Performance requirements
[N/A]

## 4.3 Usability requirements
[N/A]

## 4.5 Logical database requirements
[N/A]

## 4.6 Design constraints
[N/A]

## 4.7 Software system attributes
[N/A]

# 5 Appendices
[NULL]

## 5.1 Assumptions and dependencies
[N/A]

## 5.2 Acronyms and abbreviations
[N/A]
