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ā.
pasaule.csv.{ID: dati} ātrai un ērtai piekļuvei.while cikls nodrošina spēlētāja pārvietošanos, nomainot pašreizējo ID uz to, kas norādīts izvēlētās rīcības merkis_a vai merkis_b laukā.leaderboard.json failam, izmantojot Read-Modify-Write ciklu.| 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. |
pasaule.csv.engine.py), kas pārvērš šo CSV par "kartes" vārdnīcu.main.py izmanto while True: ciklu, kas nolasa pašreizējo lokāciju no vārdnīcas un gaida lietotāja izvēli.data.py.1. Modularitāte: Turimain.pyfailu 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ā GitHubREADME.mdfailā 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").
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...