Add project setup: layout, pyproject, constants, Doxyfile, README
Set up the Blackjack project foundation for gateway MIL-001. - pyproject.toml: Python >=3.13, src layout, no runtime dependencies, optional dev extras (ruff, mypy, pytest) and their configuration - src/blackjack/: package with constants.py (deck, scoring thresholds, emoji card faces) and Doxygen-style docstrings - tests/test_package.py: smoke tests for the package and its constants - Doxyfile: reads src/, writes HTML to docs/doxygen/ - README.md: venv setup with pip upgrade, run, test, lint and Doxygen instructions - .gitignore: ignore generated docs/doxygen/ The repository description and topics were set on the git host through its API (no file change). Closes #1 Closes #2 Closes #3 Closes #4 Closes #5 Closes #6 Task: MIL-001#1 Task: MIL-001#2 Task: MIL-001#3 Task: MIL-001#4 Task: MIL-001#5 Task: MIL-001#6
This commit is contained in:
@@ -1,2 +1,94 @@
|
||||
# 011-black-jack
|
||||
# Blackjack
|
||||
|
||||
A console Blackjack game against a computer dealer, played with emoji cards.
|
||||
It is the day 11 capstone of Udemy's *100 Days of Code: The Complete Python Pro
|
||||
Bootcamp*, built with a plan-first process (milestones and issues in `docs/`).
|
||||
|
||||
## House rules
|
||||
|
||||
- The deck is unlimited; cards are not removed when drawn. No jokers.
|
||||
- Jack, Queen and King count 10. An ace counts 11 or 1.
|
||||
- A two-card hand of ace + 10 is a blackjack.
|
||||
- The computer is the dealer and draws while its score is below 17.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.13 or newer
|
||||
- No runtime dependencies
|
||||
- Optional: [Doxygen](https://www.doxygen.nl/) to build the source documentation
|
||||
- A terminal with UTF-8 and emoji support (for example Windows Terminal)
|
||||
|
||||
## Setup
|
||||
|
||||
Create and activate a local virtual environment, upgrade pip, then install the
|
||||
project in editable mode with the development tools.
|
||||
|
||||
Windows (PowerShell):
|
||||
|
||||
```powershell
|
||||
python -m venv .venv
|
||||
.\.venv\Scripts\Activate.ps1
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install -e ".[dev]"
|
||||
```
|
||||
|
||||
Linux and macOS:
|
||||
|
||||
```bash
|
||||
python3 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install -e ".[dev]"
|
||||
```
|
||||
|
||||
Leave the environment with `deactivate`.
|
||||
|
||||
## Run
|
||||
|
||||
The game entry point is added in the *Game Implementation* milestone:
|
||||
|
||||
```bash
|
||||
python -m blackjack
|
||||
```
|
||||
|
||||
## Test
|
||||
|
||||
```bash
|
||||
python -m unittest discover -s tests
|
||||
```
|
||||
|
||||
`pytest` also runs the same tests (`python -m pytest`).
|
||||
|
||||
## Lint and type check
|
||||
|
||||
```bash
|
||||
ruff check .
|
||||
ruff format --check .
|
||||
mypy src
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
Generate the source documentation (Doxygen comments in `src/`) into
|
||||
`docs/doxygen/`:
|
||||
|
||||
```bash
|
||||
doxygen Doxyfile
|
||||
```
|
||||
|
||||
Planning documents (business case, stakeholder analysis, project plan and
|
||||
milestones) are in `docs/`.
|
||||
|
||||
## Project layout
|
||||
|
||||
```text
|
||||
src/blackjack/ game package (constants.py, ...)
|
||||
tests/ unit tests
|
||||
docs/ planning documents and generated Doxygen output
|
||||
pyproject.toml project configuration
|
||||
Doxyfile Doxygen configuration
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
See [LICENSE](LICENSE).
|
||||
|
||||
Reference in New Issue
Block a user