6. tēma: Noslēguma darbs. Projekts: "CYOA: Pasaule no faila"

Apsveicu! Tu esi nonācis līdz brīdim, kad Tavs kods kļūst par universālu dzinēju. Tavs uzdevums ir izveidot spēli, kurā neviens stāsta teikums neatrodas Python failā — viss tiek ielādēts dinamiski no CSV, bet spēlētāju sasniegumi tiek analizēti un glabāti JSON formātā.

Tehniskās prasības (Checklist)

Snieguma līmeņa apraksts (Vērtēšanas tabula)

Kritērijs 4-6 (Turpina apgūt) 7-8 (Apguvis) 9-10 (Padziļināti)
Stāsta ielāde (CSV) Kods nolasa CSV failu, bet stāsta navigācijai neizmanto ID sistēmu. Dinamiski ielādē CSV un sekmīgi transformē to "viedajā" vārdnīcā. Ieviesta datu tīrīšana (.strip(), int()) un kļūdu apstrāde tukšām rindām.
Navigācija (Spēles cikls) Spēle darbojas, bet iestrēgst vai avarē pie nepareizas ievades. while cikls strādā stabili; izmantota kļūdu noķeršana (try/except). Ieviesti strupceļi (Game Over) un uzvaras punkti, kas automātiski pārtrauc ciklu.
Atmiņa un Dati (JSON) Saglabā datus JSON, bet katru reizi pārraksta (izdzēš) iepriekšējos. Pareizi lieto Read-Modify-Write ciklu, lai uzkrātu vēsturi JSON failā. Dati tiek sakārtoti (Top saraksts) un veikta matemātiska analīze (vidējais).
Koda kvalitāte un Git Kods ir vienā lielā failā. Git vēsturē ir tikai viens ieraksts. Kods sadalīts moduļos (main, engine). Ir vismaz 3 Git commit ieraksti. Ievērots PEP 8 stils. Profesionāls README faila apraksts. Pārdomāta arhitektūra.

Darba gaita un ieteikumi

  1. Datu plānošana: Izveido un eksportē savu Google Sheets tabulu kā pasaule.csv.
  2. Dzinēja izveide: Uzraksti funkciju (failā engine.py), kas pārvērš šo CSV par "kartes" vārdnīcu.
  3. Spēles cikls: Failā main.py izmanto while True: ciklu, kas nolasa pašreizējo lokāciju no vārdnīcas un gaida lietotāja izvēli.
  4. Rezultātu uzskaitne: Pievieno JSON saglabāšanas loģiku un statistikas aprēķinu failā data.py.

Padomi:

1. Modularitāte: Turi main.py failu tīru — tajā jābūt galvenokārt tikai spēles (while) ciklam. Visu lielo failu ielādes un transformācijas kodu liec citos moduļos.
2. README faili: Labs programmētājs paskaidro, kā lietot viņa radīto "dzinēju". Savā GitHub README.md failā noteikti pievieno instrukciju, kādām jābūt CSV kolonnu galvenēm, lai citi varētu uzrakstīt savus stāstus Tavai spēlei!
3. Git Commits: Neveic vienu milzīgu push pašās beigās. Rādi skolotājam savu progresu soli pa solim (piem., "Ielādēts CSV", "Pievienots spēles cikls", "Pievienots JSON").

Koda paraugs dzinēja startam

import csv

def ieladet_pasauli(faila_vards):
    """Nolasa CSV failu un pārvērš to vārdnīcā, kur atslēga ir ID."""
    karte = {}
    with open(faila_vards, mode='r', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        for rinda in reader:
            loc_id = int(rinda['id'])
            karte[loc_id] = rinda
    return karte

# --- Šis parasti atrodas main.py failā ---
pasaule = ieladet_pasauli("pasaule.csv")
pasreizejais_id = 1 # Sākuma lokācija

print("--- SPĒLE SĀKAS ---")
# Šeit sākas Tavs while cikls...
Statuss: Sistēma gatava ielādei.
Atceries: Tavs kods tagad ir tikai dzinējs, CSV fails ir tā degviela!
⬅ Iepriekšējā stunda Tēmas apkopojums ➡