4. tēma: 4.5 CYOA stāsta zaru plānošana

Tavs šīs stundas izaicinājums: Analizēt teksta piedzīvojumu spēles gaitu, izstrādāt vizuālu algoritma shēmu un strukturēt spēles loģiku pirms reālā koda rakstīšanas.

2.4.1. Analizē problēmu, identificē datus un veic decompozīciju.
2.4.6. Plāno un dokumentē programmatūras izstrādes procesu.

Teorija: Algoritmu shēmu simboli un to nozīme kodā

Pirms programmēšanas sarežģīta spēles loģika (Kā spēlētājs pārvietosies starp telpām?) ir jāvizualizē. Izstrādē tam izmanto standartizētus algoritmu shēmu simbolus, kuriem ir tieša saistība ar Python sintaksi.

Algoritmu shēmas simboli

1. uzdevums: Mini-zara skice

Sagatavo vienkāršu algoritma shēmu ar vienu lēmuma punktu un diviem iznākumiem, izmantojot pareizos simbolus.

Izpildes soļi:

  1. Izmanto digitālu rīku (piemēram, bezmaksas atvērtā pirmkoda rīku Draw.io pārlūkprogrammā) vai lapu un zīmuli.
  2. Uzzīmē sākuma punktu "Meža mala" (izmanto Taisnstūri vai Ovālu atkarībā no tā, vai tas ir stāsta pats sākums).
  3. Pievieno lēmuma punktu, uzzīmējot rombu: "Iet alā vai kāpt kalnā?".
  4. No romba izvelc divas bultas uz diviem atšķirīgiem beigu punktiem (Ovāliem): "Atradi dārgumus" (Uzvara) un "Iekriti bedrē" (Zaudējums).
  5. Saglabā shēmu savā datorā.

2. uzdevums: Lielā piedzīvojuma karte

Projektē sarežģītāku spēles plūsmu, savienojot vairākas lokācijas vienotā tīklā, lai izvairītos no loģikas kļūdām.

Izpildes soļi:

  1. Izplāno stāstu, uzzīmējot vismaz 5 dažādas lokācijas kā taisnstūrus (piem., "Sākums", "Gaitenis", "Sarga istaba", "Dārgumu zāle", "Lamatas").
  2. Nodrošini vismaz divus dažādus veidus, kā spēlē zaudēt, un vienu ceļu uz uzvaru.
  3. Iekļauj vismaz vienu "atgriešanās" punktu — vietu, kur divi dažādi lēmumi (bultas) aizved uz vienu un to pašu lokāciju.
  4. Pārliecinies, ka no katra taisnstūra iziet vismaz viena bulta uz nākamo lēmumu (vai uz beigu ovālu).

3. uzdevums: Tehniskais projekts (Shēmas sasaiste ar kodu)

Sasaisti izveidoto vizuālo plānu ar reāliem Python elementiem — topošajām funkcijām un mainīgajiem.

Izpildes soļi:

  1. Blakus katram taisnstūrim shēmā pieraksti Python funkcijas nosaukumu, izmantojot Snake Case (piemēram, def sarga_istaba():).
  2. Identificē, vai spēlē būs nepieciešams priekšmets (piemēram, atslēga). Atzīmē shēmā, kurā telpā šis mainīgais tiks iegūts (piem., pievieno tekstu ir_atslega = True).
  3. Atzīmē rombu (Lēmumu), kurā šī atslēga tiks pārbaudīta (piem., if ir_atslega:).
  4. Iesūtīt uzdevuma github saiti e-klasē.

Papildus uzdevums: Nebeidzamais cikls (Loop) shēmā

Izveido plānu situācijai, kur spēlētājs var iestrēgt un mēģināt atkal, līdz atrisina mīklu.

Izpildes soļi:

  1. Pievieno savai shēmai jaunu lokāciju "Sfinksas mīkla".
  2. Izveido Rombu ar jautājumu.
  3. Ja atbilde ir nepareiza, izvelc bultu atpakaļ uz pašu "Sfinksas mīkla" taisnstūri (vizuāli attēlojot while ciklu vai funkcijas atkārtotu izsaukšanu).
  4. Ja atbilde ir pareiza, bulta ved uz nākamo istabu. Apraksti šo loģiku ar īsu pseidokodu blakus shēmai.

Biežākās kļūdas (un kā tās labot):

Koda piemērs: No shēmas uz kodu

# 1. Taisnstūris: Sākuma lokācija
def meza_taka():
    print("Tu stāvi uz sūnainas takas.")
    
    # 2. Rombs: Izvēle
    izvele = input("Iet (A)ugšup vai (L)ejup? ").upper()
    
    # 3. Bultas: Pārejas (Plūsma uz citām funkcijām)
    if izvele == "A":
        kalna_virsotne()
    elif izvele == "L":
        upes_leja()
    else:
        print("Nesapratu.")
        meza_taka() # Atgriežas sākumā (Cikls)
Tu stāvi uz sūnainas takas.
Iet (A)ugšup vai (L)ejup? A
⬅ Iepriekšējā stunda Nākamā stunda ➡