36 lines
1.6 KiB
Markdown
36 lines
1.6 KiB
Markdown
[English](Description) | **Dansk** | [Bahasa Melayu](Description.ms)
|
|
|
|
# Beskrivelse
|
|
|
|
Spillet følger de tre lektioner fra dag 25. Denne side forklarer, hvordan koden er bygget.
|
|
|
|
## Spilregler
|
|
|
|
- Vinduet viser det blanke kort fra `blank_states_img.gif`.
|
|
- Promptens titel viser, hvor mange delstater der er navngivet, for eksempel `14/50 States Correct`.
|
|
- Et svar matches med en delstat uden hensyn til store og små bogstaver eller mellemrum omkring.
|
|
- En rigtig delstat skrives på kortet ved sin `x` og `y` fra `50_states.csv`; et forkert eller gentaget svar spørger igen.
|
|
- `exit` eller Annuller afslutter spillet; de delstater, der ikke er navngivet, gemmes i `states_to_learn.csv`.
|
|
|
|
## Moduler
|
|
|
|
| Modul | Ansvar |
|
|
| --- | --- |
|
|
| `constants.py` | Alle konstanter: titler, filnavne, kolonnenavne, grænser |
|
|
| `states.py` | Reglerne: `State`, `find_state`, `get_missing_states`; ingen filer, ingen skærm |
|
|
| `storage.py` | Læser `50_states.csv` og skriver `states_to_learn.csv` med standardbibliotekets `csv`-modul |
|
|
| `game.py` | Gætteløkken `play` og `run_game` via en `GameScreen`-protokol |
|
|
| `turtle_screen.py` | Det eneste modul, der importerer `turtle`: kort, prompt, delstatsnavne, klikkoordinater |
|
|
| `main.py` | Indgangspunkt, der forbinder delene |
|
|
|
|
## Tests, CI og dokumentation
|
|
|
|
- `python -m pytest` kører testene med en falsk skærm, så intet vindue åbnes.
|
|
- `.gitea/workflows/run-tests.yml` kører ruff, mypy, yamllint og pytest ved hvert push og hver pull request.
|
|
- `doxygen Doxyfile` bygger kildedokumentationen i `docs/build/doxygen`.
|
|
|
|
```bash
|
|
python -m pytest
|
|
doxygen Doxyfile
|
|
```
|