A text-based dungeon crawler RPG where you battle increasingly powerful monsters to achieve the highest score.
pip install -e ".[dev]"dungeonOr run directly:
python -m src.mainfightorf- Attack the monster (it will counter-attack)restorr- Heal some HP (monster will still attack)look <target>orl <target>- Inspect hero or monster statsscores- Display high score leaderboardescape- Save your score and exitquit- Quit without savinghelp- Show available commands
- Create your hero by entering a name
- Fight monsters appropriate for your level
- Defeat monsters to gain experience and level up
- Each level increases your stats and unlocks tougher monsters
- Try to survive as long as possible and achieve a high score
- Attacking deals damage within your damage range
- Resting heals HP but the monster still attacks
- Combat uses statistical variance for realistic unpredictability
- Defeat monsters to gain kills
- Level up after killing N monsters (where N = your current level)
- Each level increases your maximum HP and combat effectiveness
11 unique monster types from weakest to strongest:
- Kobold, Slime, Goblin - Early game threats
- Werebat, Rabid Wombat - Mid-level challenges
- Orc, Undying - Dangerous foes
- Drake, Lesser Dragon - Elite enemies
- Kitten, Greater Dragon - Endgame bosses
Monsters scale with your level, ensuring constant challenge.
SuperDungeonSlaughter/
├── src/
│ ├── main.py # Game entry point
│ ├── game.py # Game orchestration
│ ├── config.py # Configuration
│ ├── models/ # Game entities (Hero, Monster, Score)
│ ├── systems/ # Game logic (Combat)
│ ├── io/ # Data persistence (Repositories)
│ ├── ui/ # User interface (Colors, Prompts, Formatters)
│ └── tests/ # Test suite (65 tests)
├── data/
│ ├── monsters.json # Monster definitions
│ └── scores.json # High scores
├── pyproject.toml # Project configuration
├── run_tests.py # Test runner
└── README.md # This file
# Run all tests
python run_tests.py
# Run specific test file
python -m unittest src.tests.test_hero# Format code
ruff format src/
# Sort imports
isort src/
# Lint
ruff check src/- Python 3.13 or higher
- No external dependencies required for gameplay
- Development tools:
ruff,isort(installed withpip install -e ".[dev]")
Your score is based on:
- Level achieved (primary factor)
- Total kills (tiebreaker)
High scores are saved to data/scores.json and persist between games.
MIT License