The Library
A banned bookshop simulation set in France, built in PyQt6 as a CS50 final project.
- role
- :Solo developer
- engine
- :Python — PyQt6
- year
- :2025
TODO — rewrite in your own voice.
A desktop simulation about running a bookshop that sells banned books. The player manages inventory, members and money while a notoriety meter climbs and the gendarmes take an interest.
design
Every system feeds the notoriety meter, and notoriety is what converts commercial success into risk. Selling more books is always the obvious move and always the dangerous one, which is where the tension comes from.
- Timer-driven day loop
- Notoriety system with terminal events
- Membership — applicants arrive as random events, accepted members pay daily fees
- Daily rent, collected after member fees
- A journal of clickable entries that open dialogues and resolve themselves
- Illustrated dialogue encounters with gendarmes
implementation
Split across main.py for the PyQt6 interface and game logic, events.py for the
event manager, members.py for membership, and modify_books.py for preprocessing
the book dataset from a Goodreads CSV.
The event system uses an EventManager holding RandomEvent and FixedEvent
objects that each carry an effect(game) function. Two boolean flags gate the
loop: day_active stops events firing outside an active day, and game_frozen
halts the timer entirely on terminal notoriety events.