diff --git a/README.md b/README.md index a957969..8a8921d 100644 --- a/README.md +++ b/README.md @@ -1,148 +1 @@ -# Arcane Purge - -A text-based exorcist game where Bible verses are your weapons against demonic forces. Type verses from Scripture to cast spells, pass memory tests to defeat demons, and unlock progressively more powerful verses as you advance. - -## What It Does - -Arcane Purge is a terminal-based game that combines Scripture memorization with demon-slaying gameplay: - -- **Verse Casting** - Select a verse, then type it exactly to deal damage to demons. Verses matching a demon's weakness deal double damage. -- **Memory Tests** - After a successful cast, recall the same verse without looking. Passing delivers a powerful finishing strike. -- **Progression** - Start with 4 easy verses. Defeating demons unlocks harder verses and new categories. After 5 demons, Memory Mode activates. -- **Scoring** - Points awarded for correct casts, speed bonuses, memory test success, and demon defeats. Deducted for failures. -- **Hint System** - Press `H` at any input to see the first letter of each word. - -## Setup and Dependencies - -### Requirements - -- Python 3.11+ -- Astral UV (for dependency management) -- Docker (for containerized deployment) - -### Install with UV - -```bash -uv sync -``` - -This installs all dependencies listed in `pyproject.toml` (currently `pytest` for testing). - -### Install with pip - -```bash -pip install pytest -``` - -## How to Run - -### Docker (Recommended) - -```bash -cd docker -docker compose up --build -``` - -This builds the game container and starts it in interactive mode. The game runs inside the container with a TTY attached for input. - -To run tests inside the container: - -```bash -cd docker -docker compose run game python -m pytest tests -v -``` - -### Direct Python - -```bash -python main.py -``` - -### Running Tests - -```bash -python -m pytest tests/ -v -``` - -The test suite includes 34 tests covering data loading, text normalization, verse filtering, similarity matching, hint generation, and game initialization. - -## Project Structure - -``` -exorcist-game/ -├── .dockerignore # Docker build exclusions -├── .env.example # Environment variable template -├── .hadolint.yaml # Dockerfile linting config -├── pyproject.toml # Project metadata and dependencies -├── uv.lock # UV dependency lock file -├── verses.json # Bible verse data (12 verses, 5 categories) -├── data.py # Verse loading, filtering, text normalization -├── main.py # Game engine: encounters, casting, scoring -├── docker/ -│ ├── docker-compose.yml # Service orchestration -│ └── Dockerfile # Multi-stage container build -├── tests/ -│ ├── test_data.py # Data module tests (21 tests) -│ └── test_main.py # Game logic tests (13 tests) -└── README.md # This file -``` - -### Key Modules - -| File | Purpose | -|---|---| -| `main.py` | Game loop, demon encounters, verse casting, memory tests, scoring, progression | -| `data.py` | Verse data loading from JSON, category/difficulty filtering, text normalization | -| `verses.json` | 12 verses across 5 categories (Binding, Healing, Exorcism, Protection, Judgment) | -| `tests/` | Validation suite ensuring data integrity and game logic correctness | - -## Configuration and Environment Variables - -### Environment Variables - -Copy `.env.example` to `.env` and configure: - -```bash -PYTHON_VERSION=3.12-slim # Python version for Docker base image -GAME_PORT=8080 # (Reserved for future web interface) -``` - -The game runs without environment variables configured. All game data is embedded in `verses.json`. - -### Verse Data Format - -Each verse in `verses.json` follows this structure: - -```json -{ - "id": "binding_001", - "text": "Full verse text here.", - "category": "Binding", - "difficulty": 1, - "reference": "Luke 10:19" -} -``` - -### Adding Verses - -Append new verse objects to the `verses` array in `verses.json`. Difficulty must be 1-5. - -### Adding Demons - -Edit the `DEMONS` list in `main.py`: - -```python -{"name": "Demon Name", "health": 100, "weaknesses": ["Binding", "Exorcism"], "damage": 20} -``` - -### Code Quality - -The project uses Ruff for linting and Hadolint for Dockerfile validation: - -```bash -ruff format . -ruff check --fix . -hadolint docker/Dockerfile -``` - -All checks must pass before building the container. \ No newline at end of file +# exorcist-game diff --git a/__pycache__/data.cpython-313.pyc b/__pycache__/data.cpython-313.pyc new file mode 100644 index 0000000..3db61c6 Binary files /dev/null and b/__pycache__/data.cpython-313.pyc differ diff --git a/__pycache__/main.cpython-313.pyc b/__pycache__/main.cpython-313.pyc new file mode 100644 index 0000000..f5868fa Binary files /dev/null and b/__pycache__/main.cpython-313.pyc differ diff --git a/prompt_v0.2.md b/prompt_v0.2.md new file mode 100644 index 0000000..9bbba6c --- /dev/null +++ b/prompt_v0.2.md @@ -0,0 +1,8 @@ +we need to implement the following key features +- Add 100 more Bible verses (ensure these are the Biblically accurate scriptures and are the ESV or KJV version) + - Give the user the option to pick which version from the start screen +- Add some dialog lines in between the battles. +- Add a tutorial level where a mentor teaches you how to face a demon. +- Keep these features in the cli version of the game, but go ahead and make a web version of the game so that people can play this from a browser + - On the web version, let the user be able to speak out the verses into their mic. We can use whisper.cpp on the backend to transcribe the audio. You can download what models you need, but try to use the bare minimum for now during testing as my internet speed is not great (40-50 Mbps) + - The user will need to still be very accurate with the wordings from the verses. diff --git a/tests/__pycache__/test_data.cpython-313-pytest-9.0.3.pyc b/tests/__pycache__/test_data.cpython-313-pytest-9.0.3.pyc new file mode 100644 index 0000000..82b28c0 Binary files /dev/null and b/tests/__pycache__/test_data.cpython-313-pytest-9.0.3.pyc differ diff --git a/tests/__pycache__/test_main.cpython-313-pytest-9.0.3.pyc b/tests/__pycache__/test_main.cpython-313-pytest-9.0.3.pyc new file mode 100644 index 0000000..89096c8 Binary files /dev/null and b/tests/__pycache__/test_main.cpython-313-pytest-9.0.3.pyc differ