6. tēma: Datu pastāvība un Analīze. 2. stunda: Digitālais rīks.

Tavs šīs stundas izaicinājums: Nodalīt stāstu no koda. Tu iemācīsies izmantot Google Sheets, lai izveidotu strukturētu spēles pasauli, un eksportēt to CSV formātā. Tas ļaus Tev uzrakstīt 100 istabu spēli, nepievienojot nevienu jaunu Python funkciju!

SR 2.3.5. (Datu strukturēšana izklājlapās) un SR 2.4.1. (Sistēmas dekompozīcija)

Teorija: Saturs pret Loģiku

Profesionālā spēļu izstrādē mēs cenšamies pēc modularitātes. Programmētājs uzbūvē "dzinēju" (Python kodu), bet rakstnieks sagatavo "degvielu" (Google Sheets stāstu).

Kā izskatās datubāzes modelis?

Kolonna (Galvene) Nozīme Piemērs
id Unikāls numurs katrai lokācijai. 1
teksts Kas notiek šajā vietā? Tu stāvi pie upes...
izvele_a Darbības nosaukums. Peldēt
merkis_a Kurp šī izvēle ved (Nākamās vietas ID)? 2

Praktiskie uzdevumi

1. uzdevums: Tabulas arhitekts (Google Sheets)

  1. Atver Google Sheets un izveido jaunu tabulu.
  2. Pirmajā rindā ieraksti galvenes precīzi šādi (bez lielajiem burtiem vai atstarpēm):
    id, nosaukums, teksts, izvele_a, merkis_a, izvele_b, merkis_b.
  3. Izveido vismaz 3 savstarpēji saistītas lokācijas (piemēram, Sākums (ID: 1) ved uz Mežu (ID: 2) vai Alu (ID: 3)).
  4. Svarīgi: merkis_a un merkis_b ailēs ieraksti tikai skaitļus (tās lokācijas ID, uz kuru spēlētājam jādodas).

2. uzdevums: Pasaules eksports (CSV)

  1. Papildini savu tabulu, līdz Tev ir vismaz 8 lokācijas (iekļaujot vismaz vienu uzvaras un vienu zaudējuma beigu punktu, kur mērķa ID vari atstāt tukšus).
  2. Dodies uz izvēlni: File → Download → Comma Separated Values (.csv).
  3. Lejupielādēto failu pārsauc par pasaule.csv un ievieto sava Python projekta mapē.
  4. Atver šo failu ar VS Code – redzēsi, ka katra rinda ir atdalīta ar komatiem. Tas ir "neapstrādāts" datu formāts.

3. uzdevums: Python "Pirmā lasīšana"

  1. VS Code izveido failu tests.py un faila augšā ieraksti import csv.
  2. Atver pasaule.csv lasīšanas režīmā ("r") ar UTF-8 kodējumu.
  3. Izmanto csv.DictReader(fails), lai datus nolasītu.
  4. Izveido for ciklu, kas iet cauri šim "lasītājam" un izprintē katras lokācijas ID un nosaukumu.

Biežākās kļūdas plānošanā:

1. "Aklie zari": Ja Tavā izvēlē mērķis ir ID 5, bet tabulā nav rindas, kas sākas ar ID 5, spēle šajā brīdī avarēs ar kļūdu.
2. Galveņu nesakritība: Python kodā Tu atsauksies uz kolonnu nosaukumiem (piem., rinda['izvele_a']). Ja tabulā ierakstīji "Izvele A", kods atgriezīs KeyError.
3. Komati tekstā: Ja stāstā lieto komatus, Google Sheets tos eksportējot automātiski ieliks pēdiņās. Python csv modulis to saprot, tāpēc droši lieto pieturzīmes stāstā!

Koda paraugs: CSV nolasīšana vārdnīcās

import csv

# Atveram eksportēto failu
with open('pasaule.csv', mode='r', encoding='utf-8') as f:
    
    # DictReader pārvērš katru CSV rindu par Python vārdnīcu (dict),
    # kur atslēgas ir tabulas pirmās rindas (galveņu) nosaukumi.
    lasitajs = csv.DictReader(f)
    
    for rinda in lasitajs:
        print(f"ID: {rinda['id']} | Vieta: {rinda['nosaukums']}")
        print(f"Apraksts: {rinda['teksts'][:30]}...") # Izvada tikai pirmos 30 burtus
        print("-" * 20)
ID: 1 | Vieta: Krustceles
Apraksts: Tu stāvi uz putekļainas takas...
--------------------
ID: 2 | Vieta: Vecais mežs
Apraksts: Koki šeit aug tik cieši, ka...
--------------------
⬅ Iepriekšējā stunda Nākamā stunda ➡