/curses-spelling-game

A simple CLI game to teach spelling using n-back spaced repetition

Primary LanguagePython

Simple Spelling Game

A simple CLI game to teach spelling

Goals

  • Quickly get practicing spelling words to build confidence
  • Practice spaced repetition schedules
  • Maybe have fun learning ncurses

Todo

  • [X] Add basic scheduler
    • Do three rounds of shuffled complete sets
  • [ ] Advanced scheduler
    • [ ] Select words for the day
    • [ ] items.sort(key = lambda item: random.random() * item.weight)
    • [ ] Compute local accuracy satisfaction threshhold
    • [ ] Add continuous local reschedule
      ./spelling-game.py test
              
  • [ ] Hide target word when typing starts
  • [ ] Start timer on first letter typed
  • [ ] Move curses window logic into class and clarify variable names
  • [ ] Adjust code for game mode flexibility
  • [X] Base CLI program
  • [X] Home directory settings
  • [X] Add word command
  • [X] add score based on attempts and typing time
  • [X] record score
  • [X] introduce curses display
  • [X] ASCII art title screen
    • [X] Press enter to start
  • [X] Clean up curses display
    • [X] clear echo areas for new attempts
  • [X] system beep
  • [X] eliminate having to press enter
  • [X] Basic Game loop
  • [X] Control-C trap

Extras

  • [ ] Flash screen red on error and start word over and flash correct word
  • [ ] Menu system
  • [ ] Remove word command
  • [ ] Log to stdout and to log file
  • [ ] Implement n-back
  • [ ] add time delay punishment on error
  • [ ] Randomly swap two letters

Notes

Metrics

  • There are two metrics that describe spelling a word: speed and accuracy
  • Speed (r) of spelling a word is letters/second
  • Accuracy (k) is the expected number of attempts until success
    • Success is defined as consecutively matching all letters exactly
  • The game keeps score of attempts and time per word
  • Expected Time (T) = A * len(word) / r
  • Expected Attempts (A) = k ^ -len(word)

Spaced repetition

  • Wikipedia
    "Spaced repetition is a learning technique that incorporates increasing intervals of time between subsequent review of previously learned material in order to exploit the psychological spacing effect. Alternative names include spaced rehearsal, expanding rehearsal, graduated intervals, repetition spacing, repetition scheduling, spaced retrieval and expanded retrieval."
        
  • Meaning of variables in forgetting formula - StackOverflow