testsAndMisc/PYTHON/keyboardCoop
Krzysztof kuhy Rudnicki 87cbcd5ff6 fix(lint): remove style preference rules from global ignores
Fixed violations:
- PERF401: Use list comprehension (downloadCats, split)
- SIM102: Combine nested if statements (keyboardCoop)
- SIM113: Use enumerate (lichess_bot/tests)
- B904: Add 'from None/e' to raises (engine, stockfish_analysis, generate_blunder_tests)
- TRY300: Move return to else block (screen_locker)

Per-file ignores added for TRY301:
- lichess_bot/main.py: Null checks on subprocess streams
- randomize_numbers/random_digits.py: Input validation

Removed from global ignore (no violations):
- RUF005, SIM103, SIM105, SIM108

Global ignore now only contains unavoidable conflicts:
- D203/D213: Docstring style conflicts
- COM812/ISC001: Formatter conflicts (per ruff docs)
2025-11-30 20:47:38 +01:00
..
__init__.py Enable INP001: add __init__.py to 11 packages 2025-11-30 14:55:20 +01:00
main.py fix(lint): remove style preference rules from global ignores 2025-11-30 20:47:38 +01:00
README.md fix: correct shebang and executable permissions 2025-11-30 13:42:16 +01:00
requirements.txt feat: coop keyboard game 2025-07-18 00:08:21 +02:00
run_game.sh fix: resolve shellcheck warnings 2025-11-30 13:48:17 +01:00
words_dictionary.json fix: correct shebang and executable permissions 2025-11-30 13:42:16 +01:00

Keyboard Coop Game

A fun 2-player cooperative word game where players take turns selecting adjacent letters on a QWERTY keyboard to form valid words.

How to Play

  1. Setup: Two players take turns at the same computer
  2. Turn System: Player 1 starts by clicking any letter on the keyboard
  3. Adjacent Rule: The next player must click a letter that is adjacent to the previously selected letter
  4. Word Formation: Continue taking turns until you want to submit a word
  5. Scoring: Press ENTER to submit the word. Valid words score points exponentially based on length:
    • 3 letters: 2 points
    • 4 letters: 4 points
    • 5 letters: 8 points
    • 6 letters: 16 points
    • And so on...

Game Rules

  • Minimum Length: Words must be at least 3 letters long
  • Adjacency: Letters must be adjacent on a standard QWERTY keyboard
  • Valid Words: Only dictionary words are accepted
  • Cooperative: Both players share the same score - work together!

Keyboard Adjacency

Each key is adjacent to its neighbors (including diagonals). For example:

  • 'S' is adjacent to: Q, W, E, A, D, Z, X, C
  • 'F' is adjacent to: E, R, T, D, G, C, V, B

Controls

  • Mouse Click: Select letters and buttons
  • ENTER Key: Submit current word
  • R Key: Reset the game
  • ENTER Button: Submit current word (mouse)
  • RESET Button: Reset the game (mouse)

Installation

  1. Make sure you have Python 3.6+ installed
  2. Install dependencies:
    pip install -r requirements.txt
    
  3. Run the game:
    python main.py
    

Features

  • Visual QWERTY keyboard layout
  • Real-time adjacency highlighting
  • Turn-based gameplay with player indicators
  • Exponential scoring system
  • Built-in dictionary validation
  • Reset and restart functionality

Strategy Tips

  • Look for common word patterns and endings
  • Try to set up your partner for success
  • Longer words give exponentially more points
  • Remember that some letters have more adjacent options than others

Enjoy playing together!