›_ ebskola.lv
← 4.4 4.6 →

4.5 Spēles plānošana ar shēmām

Stundas uzdevums: Analizēt "Skaitļu minētāja" spēles gaitu, izstrādāt vizuālu algoritma shēmu un sasaistīt to ar konkrētām funkcijām pirms koda rakstīšanas.

SR 2.4.1. Analizē problēmu un veic dekompozīciju SR 2.4.6. Plāno un dokumentē izstrādes procesu

70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un pieraksti, kas strādā. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.

Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.

Teorija: Algoritma shēmu simboli

Pirms koda rakstīšanas algoritmu vizualizē shēmā. Katrs simbols Python kodā nozīmē konkrētu konstrukciju.

SimbolsNozīme shēmāAtbilstība Python kodā
OvālsSākuma vai beigu punktsProgrammas sākums / return
TaisnstūrisDarbība vai aprēķinsFunkcijas izsaukums vai piešķiršana
ParalelogramsIevade / izvadeinput() / print()
RombsLēmums (jā/nē)if / elif / else
BultaPlūsmas virziensKoda izpildes secība

Cikli shēmā tiek attēloti kā bulta atpakaļ uz iepriekšējo soli ar lēmuma rombu, kas pārtrauc vai turpina ciklu - tas atbilst Python while ciklam.

Praktiskie uzdevumi

1. uzdevums - Izpēti pamatus

Atpazīsti šīs stundas galveno ideju un sasaisti to ar gala projektu Skaitļu minētājs.

  1. Izlasi stundas izaicinājumu un ar vienu teikumu pieraksti, ko šodien mācīsies par tēmas projektu Skaitļu minētājs.
  2. Atrodi teorijas sadaļā vienu piemēru, kas izmanto Python, un pieraksti trīs svarīgākās darbības.
  3. Pieraksti, kurā gala projekta daļā šī prasme būs vajadzīga: sākuma ekrānā, spēles laukumā, datos, vadībā, rezultātā vai publicēšanā.
  4. Izveido nelielu izmēģinājuma fragmentu .py, .md, .html vai projekta dokumentācijas failā, nevis uzreiz lielu funkciju.
  5. Izmanto tikai šajā stundā un iepriekšējās Programmēšana I stundās apgūto; ja ideja prasa jaunu rīku, pagaidām pieraksti to kā komentāru.
  6. Nomaini piemēra mainīgos uz klases situācijām, piemēram, klases_punkti, zvana_taimeris, pazudusais_markieris vai kafijas_pauze; mazliet humora drīkst, bet kodam jāpaliek skaidram.
  7. Pievieno vienu komentāru, kas paskaidro, kāpēc šī darbība nepieciešama gala spēles projektam.
  8. Palaid programmu vai atver sagatavoto failu un pārbaudi rezultātu, lai redzētu, vai minimālais piemērs darbojas.
  9. Nomaini vienu ievades vērtību vai tekstu un pārbaudi, vai rezultāts mainās paredzami.
  10. Pieraksti vienu secinājumu: kas šajā stundā ir jaunais jēdziens un kā tas palīdzēs gala spēlei.

2. uzdevums - Izveido risinājumu

Izmanto šīs stundas prasmi nelielā, strādājošā projekta daļā.

  1. Atver tēmas projekta mapi un atrodi failu vai scēnu, kurā šīs stundas prasme loģiski iederas projektā Skaitļu minētājs.
  2. Izveido rezerves kopiju ar Git commit vai pārliecinies, ka darba koks ir saprotamā stāvoklī.
  3. Pievieno nelielu funkciju, sadaļu vai elementu .py, .md, .html vai projekta dokumentācijas failā, izmantojot teorijas piemēru kā sākumpunktu.
  4. Nosauc jaunos mainīgos skaidri un ikdienišķi, piemēram, par punktiem, laiku, klases grupu, pogu vai rezultātu.
  5. Ievieto risinājumu tur, kur tas būs lietotājam redzams vai spēles loģikai izmantojams, nevis atsevišķā nesavienotā failā.
  6. Pārbaudi, ka risinājums netraucē iepriekšējām stundām izveidoto funkcionalitāti.
  7. Pievieno vienu lietotājam saprotamu tekstu vai izvadi, kas parāda, ka jaunā daļa strādā.
  8. Palaid programmu vai atver sagatavoto failu un pārbaudi rezultātu.
  9. Salabo pirmo kļūdu, kuru pamani, pirms pievieno nākamo uzlabojumu.
  10. Veic Git commit ar īsu ziņu, kurā minēts, kā šī prasme tika pielietota gala projektā.

3. uzdevums - Pārbaudi un uzlabo

Pārbaudi risinājumu, salīdzini rezultātus un atrodi, ko uzlabot.

  1. Izveido trīs pārbaudes gadījumus projektam Skaitļu minētājs: parasts gadījums, robežgadījums un kļūdaina vai tukša ievade.
  2. Pirms palaišanas pieraksti, kādu rezultātu sagaidi katrā gadījumā.
  3. Palaid pirmo testu un salīdzini faktisko rezultātu ar sagaidāmo.
  4. Palaid otro testu ar mazāko, lielāko vai tukšāko vērtību, ko šī stunda loģiski atļauj.
  5. Palaid trešo testu ar kļūdainu ievadi vai neērtu lietotāja darbību.
  6. Atzīmē, vai problēma ir kodā, datos, izkārtojumā vai lietotāja instrukcijā.
  7. Izlabo vienu atrastu problēmu, nepaplašinot darba apjomu ar jaunu, vēl neapgūtu funkciju.
  8. Pievieno īsu komentāru vai README ierakstu par to, kā testēšana palīdzēja uzlabot gala spēli.
  9. Pārbaudi vēlreiz pēc labojuma, lai pārliecinātos, ka labojums tiešām strādā.
  10. Pieraksti vienu jautājumu, ko nākamajā stundā vēl vajadzētu pārbaudīt vai uzlabot.

Papildu uzdevums - Izveido savu papildinājumu

Pievieno nelielu radošu uzlabojumu ar klases dzīves piemēru, nepārsniedzot apgūto vielu.

  1. Izvēlies vienu nelielu radošu papildinājumu, kas iederas projektā Skaitļu minētājs un balstās tikai uz jau apgūto.
  2. Izvēlies klases dzīves motīvu, piemēram, zvana taimeri, pazudušu marķieri, grupu punktus vai pārāk entuziastisku prezentācijas pogu.
  3. Uzraksti papildinājuma mērķi vienā teikumā, lai tas nekļūtu par pārāk lielu projektu.
  4. Pievieno vienu jaunu mainīgo, tekstu, vizuālo elementu vai pārbaudes nosacījumu.
  5. Pārliecinies, ka papildinājums neizmanto jaunu bibliotēku vai komandu, kas šajā kursā vēl nav mācīta.
  6. Savieno papildinājumu ar jau esošo projekta daļu, nevis atstāj to kā atsevišķu demonstrāciju.
  7. Pārbaudi, vai lietotājs saprot, kas jādara, bez garas instrukcijas ekrānā.
  8. Palaid programmu vai atver sagatavoto failu un pārbaudi rezultātu un pārliecinies, vai pamata funkcija joprojām darbojas.
  9. Palūdz klasesbiedram 30 sekundēs izmēģināt papildinājumu un pateikt, kas nav skaidrs.
  10. Pieraksti, ko atstāsi kā nākamo uzlabojumu, bet šodien nepievieno, lai projekts paliek stabils.

Biežākās kļūdas

Koda piemērs: No shēmas uz kodu

import random

def izveido_skaitli():
    return random.randint(1, 100)

def viens_meginajums(patiesais):
    minetais = int(input("Min skaitli (1-100): "))
    if minetais == patiesais:
        return "trāpīts"
    elif minetais < patiesais:
        return "par mazu"
    return "par lielu"

patiesais = izveido_skaitli()
megi = 0
while megi < 10:
    rezultats = viens_meginajums(patiesais)
    print(rezultats)
    megi += 1
    if rezultats == "trāpīts":
        break
Min skaitli (1-100): 50
par lielu
Min skaitli (1-100): 25
par mazu
Min skaitli (1-100): 37
trāpīts
⬅ Iepriekšējā stunda Nākamā stunda ➡