# Vocabulary Exercises Documentation This document explains how the exercise system works in the Polly vocabulary learning app. ## Overview The exercise system allows users to practice vocabulary through various interactive exercise types. Users can configure and start exercises from different screens, track their progress, and review their results. ## Exercise Types The app supports four different exercise types: ### 1. Guessing Exercise (Flashcard Mode) **How it works:** - A vocabulary card is displayed with one side (word or translation) - The user sees only one side of the card initially - The user guesses the answer before flipping the card **User actions:** - Tap "Flip Card" to reveal the answer - Mark as "Wrong" or "Correct" after revealing - The card advances when "Next" is tapped **Use case:** Ideal for quick recognition practice and memorization. --- ### 2. Spelling Exercise **How it works:** - A vocabulary word is displayed as a prompt - The user must type the translation manually - The app checks if the typed answer is correct **User actions:** - Type the translation in the text field - Tap "Check" to submit the answer - See immediate feedback on correctness - Tap "Next" to proceed to the next card **Use case:** Excellent for practicing proper spelling and reinforcing memory through active recall. --- ### 3. Multiple Choice Exercise **How it works:** - A word is displayed with four answer options - Only one option is the correct translation - The user selects their answer **User actions:** - Tap one of the four options - The correct answer is highlighted after selection - Visual feedback shows if the choice was right or wrong - Tap "Next" to continue **Use case:** Good for recognition practice with immediate feedback. --- ### 4. Word Jumble Exercise **How it works:** - A word's letters are scrambled and displayed - The user must click letters in the correct order to form the word - Letters can be moved between the "available" and "assembled" areas **User actions:** - Click a letter from the available pool to add it to the assembly area - Click an assembled letter to return it to the pool - Tap "Check" when the word is assembled - The correct answer is revealed if incorrect **Use case:** Great for reinforcing spelling through active manipulation of letter order. --- ## Starting an Exercise ### Entry Points 1. **Dashboard Widget:** Tap "Start Exercise" from the ModernStartButtons widget 2. **Category Detail Screen:** Tap "Start" on a specific category 3. **Main Vocabulary Screen:** Tap the FAB (Floating Action Button) 4. **Daily Exercise:** Access from the dashboard for daily review ### Configuration Options Before starting an exercise, users can configure: | Option | Description | |--------|-------------| | **Number of Cards** | Slider to select how many cards to practice (1 to total available) | | **Quick Select** | Preset buttons for 10, 25, 50, or 100 cards | | **Language Direction** | Choose origin and target languages | | **Exercise Types** | Select which exercise types to include (can combine multiple) | | **Shuffle Cards** | Randomize card order | | **Shuffle Languages** | Randomize which side (word/translation) is shown | | **Training Mode** | Practice without affecting progress/stages | | **Due Today Only** | Limit to items scheduled for today | --- ## Exercise Flow ``` ┌─────────────────┐ │ START SCREEN │ │ (Configuration) │ └────────┬────────┘ │ Tap "Start Exercise" ▼ ┌─────────────────┐ │ EXERCISE │ │ PROGRESS │ │ INDICATOR │ ├─────────────────┤ │ CARD/QUESTION │ │ DISPLAY │ ├─────────────────┤ │ CONTROLS │ │ (Reveal/Check) │ └────────┬────────┘ │ Complete all cards ▼ ┌─────────────────┐ │ RESULT SCREEN │ │ (Score, │ │ Retry, │ │ Start Over) │ └─────────────────┘ ``` --- ## Exercise Progress Indicator During an exercise, a progress bar shows: - **Green section:** Number of correct answers - **Red section:** Number of wrong answers - **Total:** Total cards in the exercise - **Close button:** Exit the exercise (shows confirmation dialog) The progress bar animates as the user advances through cards. --- ## Exercise State Management The app uses a state machine to manage exercise progress: ### States | State | Description | |-------|-------------| | `START` | Configuration screen before starting | | `EXERCISE` | Active exercise in progress | | `RESULT` | Exercise completed, showing results | ### State Transitions ``` START → EXERCISE (user taps "Start") EXERCISE → RESULT (all cards completed) RESULT → START (user taps "Start Over") RESULT → EXERCISE (user taps "Retry Wrong") ``` --- ## Exercise Actions The following user actions are available during exercises: | Action | Description | |--------|-------------| | `Reveal` | Show the answer (Guessing exercise) | | `Submit` | Submit an answer (Spelling, Multiple Choice, Word Jumble) | | `Next` | Move to the next card | | `UpdateWordJumble` | Modify assembled letters (Word Jumble) | --- ## Results Screen After completing an exercise, users see: ### Displayed Information - **Percentage Score:** Overall performance as a circular progress indicator - **Correct/Wrong Count:** Detailed breakdown of answers - **Total Items:** Number of cards practiced ### Available Actions - **Start Over:** Begin a new exercise from scratch - **Repeat Wrong:** Retry only the incorrectly answered cards - **Finish:** Return to the main screen --- ## Training Mode When Training Mode is enabled: - Answers are not recorded for progress tracking - No stage progression occurs - Useful for casual practice or testing knowledge When disabled (default): - Correct answers may advance item stages - Progress is saved for statistics - Affects due dates and learning progress --- ## Technical Architecture ### Key Components 1. **VocabularyExerciseHostScreen.kt** - Main container managing exercise flow - Handles screen states (START, EXERCISE, RESULT) - Coordinates between configuration and exercise screens 2. **VocabularyExercise.kt** - Defines exercise types (enum) - State classes for each exercise type - Action sealed class for user interactions 3. **VocabularyExerciseRenderer.kt** - Renders the appropriate UI based on exercise state - Handles display logic for each exercise type 4. **ExerciseControls.kt** - Input field and buttons for user interaction - Different controls based on exercise type 5. **ExerciseProgressIndicator.kt** - Visual progress bar during exercises - Animated updates for correct/wrong counts --- ## Related Screens | Screen | Purpose | |--------|---------| | `StartScreen` | Configure exercise settings before starting | | `ResultScreen` | Show final score and options to continue | | `CategoryDetailScreen` | Start exercise for a specific category | | `DashboardContent` | Main dashboard with exercise shortcuts | --- ## Tips for Users 1. **Combine exercise types:** Mix Guessing, Spelling, and Word Jumble for variety 2. **Use Training Mode:** For casual practice without affecting progress 3. **Start small:** Use 10-25 cards initially, increase as comfortable 4. **Review wrong answers:** Use "Repeat Wrong" to focus on difficult items 5. **Daily exercises:** Use "Due Today Only" for spaced repetition practice --- ## Navigation During Exercise - **Close button:** Exit exercise (confirms before closing) - **Back button:** Also triggers exit confirmation - Results screen options: Continue practicing or return to dashboard