Typing Master is an educational typing game designed to help users improve their typing skills through structured practice levels, real-time feedback, and performance tracking. This console-based application provides a comprehensive typing tutor experience with multiple difficulty levels, user authentication, and multiplayer functionality.
- Features
- Levels
- Installation
- Usage
- Platform Support
- Configuration
- Multiplayer Mode
- Performance Tracking
- Customization Options
- Development
- 5 Progressive Levels - From basic home row (ASDF) to full keyboard mastery
- Sentence Practice - Advanced level with complete sentences for speed building
- Time-limited Challenges - Each level has time constraints for realistic practice
- Multiplayer Duel - Compete against other users with the same word set
- Session Statistics - Detailed metrics for each practice session
- User Profiles - Personal accounts with persistent data storage
- Accuracy Calculation - Real-time accuracy feedback with percentage
- WPM Calculation - Words per minute speed measurement
- Progress Monitoring - Track improvement over time
- Beautiful UI - Unicode borders and modern console interface
- Color Coding - Visual feedback for correct/incorrect entries
- Progress Bars - Visual indicators of completion
- Performance Stars - Rating system based on accuracy
- Encouragement Messages - Motivational feedback based on performance
- Key Click Sounds - Audible feedback for typing
- Success Tones - Positive audio cues for correct entries
- Error Tones - Audio feedback for mistakes
- Configurable Sound Settings - Toggle audio on/off
- User Authentication - Secure login/registration system
- Database Storage - Persistent user data in CSV format
- Profile Management - View and track user statistics
- Switch User - Easy switching between accounts
- Keys: A S D F
- Focus: Building left-hand muscle memory
- Items: Basic key combinations and simple words
- Time Limit: 30 seconds
- Keys: A S D F J K L ;
- Focus: Extending to right hand
- Items: Short words combining both hands
- Time Limit: 30 seconds
- Keys: 1-5, Q W E R T Y U I O P
- Focus: Adding top row keys and numbers
- Items: Words incorporating top row characters
- Time Limit: 30 seconds
- Keys: Full keyboard (all letters, numbers, special characters)
- Focus: Complex 7-8 letter words
- Items: Advanced vocabulary and typing challenges
- Time Limit: 30 seconds
- Keys: Full keyboard with spaces and punctuation
- Focus: Sentences and phrases for speed building
- Items: Complete sentences with proper grammar
- Time Limit: 60 seconds
- C++11 or higher compatible compiler (g++, gcc, or MSVC)
- CMake (optional for building)
- Git (optional for cloning)
- Clone or download the project files
- Ensure all source files are present:
main.cppTypingMaster.hTypingMaster.cpp
- Compile using g++:
g++ -std=c++11 -o typing_master main.cpp TypingMaster.cpp
- Run the executable:
- Windows:
typing_master.exe - Linux/Mac:
./typing_master
- Windows:
- Launch the application
- Register a new account or Login to an existing one
- Choose from the main menu options:
- Start Game - Begin from your selected level
- Select Level - Choose a specific level to practice
- View Statistics - See current session stats
- How to Play - Get tips and instructions
- View Profile - Check your overall progress
- Switch User - Change to a different account
- Multiplayer Duel - Compete against another user
- Exit - Save progress and quit
- The application displays the target text to type
- Type the text exactly as shown and press Enter
- Receive immediate feedback (✅ for correct, ❌ for incorrect)
- Continue through all items in the level
- View detailed results at the end of each level
- Full Unicode support with proper console configuration
- Audio feedback using Windows Beep API
- Proper UTF-8 output handling
- ANSI color support
- System audio feedback using console bells
- Standard POSIX compatibility
- Automatic detection of console capabilities
- Fallback ASCII characters for basic terminals
- Environment variable overrides for customization
NO_COLOR- Disable all color outputNO_UNICODE- Disable Unicode characters and use ASCII fallbackNO_SOUND- Disable all audio feedback
- Case Sensitivity - Toggle for case-sensitive typing (default: insensitive)
- Colors Enabled - Enable/disable color output (auto-detected)
- Unicode UI - Enable/disable Unicode characters (auto-detected)
- Sound Enabled - Enable/disable audio feedback (auto-detected)
The multiplayer duel feature allows two users to compete against each other:
- Select a level to compete on
- Choose an opponent user from the database
- Both players type the same set of words
- Results are compared based on:
- Score (primary)
- Accuracy (secondary)
- Words Per Minute (tertiary)
- Winner is determined and displayed
- Words Attempted - Total words attempted in the session
- Words Correct - Number of correctly typed words
- Words Wrong - Number of incorrectly typed words
- Accuracy - Percentage of correct words
- Total Time - Time spent in the session
- Speed (WPM) - Words per minute calculation
- Score - Total points earned
- Rating - Star rating based on accuracy
- Games Played - Total games completed by the user
- Total Words - All words attempted across sessions
- Total Correct - Total correct words across sessions
- Overall Accuracy - Average accuracy across sessions
- Overall WPM - Average words per minute across sessions
- Best Accuracy - Highest accuracy achieved
- Best WPM - Highest words per minute achieved
- High Score - Highest score achieved
- Color Themes - 7 color options (green, red, yellow, cyan, blue, magenta)
- Unicode Borders - Sophisticated border characters or ASCII alternatives
- Progress Visualization - Filled/unfilled progress bars with percentage
- Key Click Sounds - Adjustable based on typed characters
- Error Feedback - Distinct sounds for incorrect entries
- Success Tones - Positive audio confirmation
- Time Limits - Adjustable per level
- Item Count - Number of words per level
- Item Complexity - Word length and complexity
main.cpp- Entry point and basic application setupTypingMaster.h- Class definition and interface declarationsTypingMaster.cpp- Implementation of all functionality
TypingMaster- Main application classLevelConfig- Configuration for each typing levelStats- Session and level statistics trackingUserProfile- User account and progress data
- Standard C++ library (iostream, string, vector, chrono, etc.)
- Platform-specific console APIs (Windows.h for Windows)
- Cross-platform threading support
- Uses C++11 standard for broad compatibility
- Includes platform-specific code for console capabilities
- Cross-platform sleep functions for audio feedback
- All memory handled automatically by standard containers
- No manual memory allocation/deallocation required
- Optimized string operations
- Efficient random shuffling algorithms
- Minimal resource usage
- CSV-based user database (users.db)
- Automatic save/load on application start/end
- Thread-safe database operations
Typing Master provides a comprehensive, cross-platform typing tutor solution with professional-grade features and educational value. The application emphasizes user experience, performance tracking, and progressive skill building through structured levels.
The codebase demonstrates modern C++ practices while maintaining accessibility for learning and modification.