Implement the playable console game for gateway MIL-002.
- rules.py: deal_card, calculate_score (blackjack = 0, aces drop 11 ->
1)
and compare with an Outcome enum; no console I/O
- display.py: hand rendering as plain-text rank plus suit emoji (keycap
emoji rendered as boxes in common terminals), score formatting and
outcome messages
- art.py: course logo shown at the start of every game
- game.py: play_game (hit/stand, dealer draws below 17), play (restart
loop, console clear, logo) and ask_yes_no with re-prompt; read, write
and draw are injected so games can be scripted
- __main__.py: python -m blackjack entry point, exits cleanly on
Ctrl+C/Ctrl+D
- constants.py: card ranks and suits, prompts and messages
- tests: 32 new unit and scripted end-to-end tests (35 in total)
- README: run instructions for python -m blackjack
Closes#7Closes#8Closes#9Closes#10Closes#11Closes#12Closes#13Closes#14
Task: MIL-002#1
Task: MIL-002#2
Task: MIL-002#3
Task: MIL-002#4
Task: MIL-002#5
Task: MIL-002#6
Task: MIL-002#7
Task: MIL-002#8
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#1Closes#2Closes#3Closes#4Closes#5Closes#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