Build the project and output the package in the dist
directory:
pip install build
python3 -m build
To test the project module locally, create a virtual environment first:
pip install virtualenv
python3 -m venv .venv
Then, activate the virtual environment:
source .venv/bin/activate # For Unix-like operating systems
.venv\bin\activate.bat # For Windows
Finally, do a editable install using pip:
pip install -e .
Run the program by executing:
dsimulator
- Develop a visual user interface to represent vertex and edge tables, displaying their positions and connections. This could be a city map where each vertex represents a point of interest, and edges represent paths between them.
- Display character and building information, showcasing details from the building, home, occupation, workplace, and inhabitant tables. This may include character profiles, homes, workplaces, etc.
- Implement a system to show relationships between characters (relationship table) and track investigation status (status table) such as suspects, victims, and key events.
- Create an SQLite database using the provided schema, ensuring all constraints and relationships are correctly implemented.
- Populate tables with initial data. Ensure diversity in characters, locations, and scenes for realism. Approximately 1000 records need to be populated (generate families, assign occupations, incomes, and addresses).
- Implement the killer's behavior algorithm based on the killer and killer_chara tables.
- Develop a simulation system for roadblocks or impassable areas affecting the edge table.
- Ensure interaction and updates between in-game actions (interrogation, evidence collection) and the database.
- Calculate killer movement paths and required time.
- Consider implementing a possible save/load mechanism.
- Define characteristics of the killer and ordinary residents and their interactions.
- Implement the sheriff's interrogation skills, road closure abilities, and suspect apprehension functionality.
- If interrogation functionality is implemented, hide certain information from players and implement related features.
- Implement functions to query the SQLite database to retrieve information about locations, characters, and events as needed.
- Develop a mechanism to update the database based on player actions, including marking suspects, updating character statuses, or recording investigation progress.
- Count the number of times each person was witnessed at a certain vertex.
- List all possible via points given the start and end vertices and the time constraint.
- List the inhabitants related to the victim.
- Provide clear feedback based on player actions and database updates. For example, if a player investigates a location, display relevant information from the database.
- Implement a mechanism to determine the end of the game, whether by a specific date or through a reputation-based system.