A desktop application for Flash Anzan mental arithmetic training, built with Java and JavaFX.
Flash Anzan provides a focused training environment where users configure a session and practice sequential mental arithmetic by following numbers displayed one at a time.
Flash Anzan is an open-source desktop training application designed for Flash Anzan mental arithmetic practice.
The application does not use lessons, user profiles, accounts, statistics, or predefined exercise sets. Instead, each training session is configured directly by the user and exercises are generated dynamically.
The project focuses on a simple training workflow:
- Configure the training session.
- Start the exercise sequence.
- Follow the displayed values.
- Enter the final answer.
- Review the session results.
The application is intended as a Java and JavaFX project focused on desktop application development, exercise generation, validation, session lifecycle management, and a clean user interface.
- Configurable Flash Anzan training sessions
- Dynamic exercise generation
- Support for 1 to 5 digit values
- Configurable number of displayed values per exercise
- Configurable exercise count
- Adjustable display speed
- Addition and subtraction sequences
- Running-total range validation
- Sequential number display
- Answer validation
- Detailed session results
- Correct and incorrect answer indicators
- Sound effects with persistent sound settings
- Persistent training configuration
- Full-screen desktop interface
- Custom application title bar
- English user interface
- Offline operation
- No accounts or user profiles
- No database
- No analytics
- No advertisements
Before starting a session, the user can configure the following options:
| Setting | Supported Values | Description |
|---|---|---|
| Digits | 1 to 5 | Controls the digit length of generated values |
| Operations | 3 to 10 | Number of values displayed during each exercise |
| Exercises | 1, 5, 10, or 20 | Number of exercises in the training session |
| Display Speed | 100 ms to 2000 ms | Delay between displayed values |
| Sound | Enabled or disabled | Controls application sound effects |
The most recently selected training settings are stored locally and restored when the application is started again.
When a training session starts, Flash Anzan generates the requested exercises in the background.
The application displays READY and GO before presenting the generated values one at a time.
The user follows the sequence mentally and enters the final result after the last value has been displayed.
Each exercise is validated against its generated result. At the end of the session, the application presents a result table containing:
- Exercise number
- Displayed operation sequence
- User answer
- Correct answer
- Exercise status
The user can repeat the training with the same configuration or return to the training settings.
Exercises are generated dynamically by the Flash Anzan generation engine.
For a selected digit length, generated values use the configured number of digits and the running total is constrained to the supported range for that digit configuration.
For example:
- 1 digit: running total remains between
0and9 - 2 digits: running total remains between
0and99 - 3 digits: running total remains between
0and999
The generation and validation layers are separated so generated exercises can be checked independently against the active generator configuration.
The generator supports both positive and negative displayed values while preventing invalid intermediate running totals.
The project separates application responsibilities into focused packages:
src/
├── application/
├── controllers/
├── engine/
│ ├── generator/
│ ├── session/
│ └── validation/
├── exceptions/
├── i18n/
├── images/
├── models/
│ └── enums/
├── services/
│ ├── audio/
│ ├── resources/
│ ├── settings/
│ └── translation/
├── sounds/
├── styles/
└── utils/
Application
Contains the JavaFX application entry point and application lifecycle handling.
Controllers
Manage the main menu, training settings, active training session, results, and about screens.
Generator Engine
Generates exercise sequences according to the selected training configuration.
Validation
Validates generated exercises and submitted answers.
Session Management
Manages exercise generation, active training sessions, background execution, cancellation, and session lifecycle.
Services
Provide audio playback, resource loading, persistent settings, and user-interface text resources.
Models
Represent exercises, exercise sequences, settings, validation results, and session results.
- Java 17
- JavaFX 17
- Maven
- Java Preferences API
- JavaFX CSS
The application does not require a database or network connection.
To build and run the project from source, the following tools are required:
- JDK 17 or later
- Maven
- Git
Clone the repository:
git clone https://github.com/moyy9/Flash-Anzan.gitMove into the project directory:
cd Flash-AnzanRun the application with Maven:
mvn clean javafx:runThe project can also be imported into Eclipse.
- Open Eclipse.
- Select
File→Import. - Select
Maven→Existing Maven Projects. - Select the Flash Anzan project directory.
- Complete the Maven import.
- Run
application.FlashAnzanApp.
JavaFX dependencies are declared in pom.xml.
Flash Anzan uses a custom Maven source layout.
The Java source files and application resources are stored under src/, and the Maven configuration explicitly defines this source directory and the required resource paths.
The project configuration is declared in pom.xml.
Training settings are stored locally using the Java Preferences API.
The application persists:
- Digit configuration
- Number of displayed values
- Exercise count
- Display speed
- Sound state
Training results are not stored.
No user account, database, or cloud service is used.
Flash Anzan is currently at version 1.0.0.
The initial application scope is complete and focuses exclusively on configurable Flash Anzan mental arithmetic training.
This project is open-source software licensed under the MIT License.
You are free to use, modify, and distribute the software under the terms of the license.
See the LICENSE file for the complete license text.
Moustafa Ayyoub ALLAL



