›_ ebskola.lv
← 2.4 2.6 →

2.5 Spēles plānošana

Stundas uzdevums: Izstrādāt spēles matemātisko modeli un strukturēt programmas algoritmu ar pseidokoda palīdzību, lai precīzi definētu projekta loģiku pirms 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.

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: Matemātiskais modelis un algoritms

Veiksmīgas programmatūras pamats ir rūpīga plānošana. Tā vietā, lai uzreiz rakstītu kodu, mēs vispirms veidojam Algorithm (Algoritmu) – precīzu, secīgu darbību plānu problēmas risināšanai.

Jebkura programma darbojas pēc trīs soļu principa:

  • Input (Ievade): Datu iegūšana no lietotāja. Pirms koda rakstīšanas jādefinē, kādi Variables (Mainīgie) būs nepieciešami.
    # Piemērs: Iegūstam nepieciešamos datus
    speletaja_skaitlis = int(input("Ievadi savu skaitli: "))
  • Process (Apstrāde): Datu matemātiska un loģiska manipulācija. Kā mēs rēķināsim rezultātu?
    # Piemērs: Apstrādājam datus pēc izdomātas formulas
    rezultats = (speletaja_skaitlis * 2) + 15
  • Output (Izvade): Rezultāta atgriešana lietotājam cilvēkam saprotamā formātā.
    # Piemērs: Formatēta rezultāta parādīšana
    print(f"Tavs iznākums ir: {rezultats}")

Praktiskie uzdevumi

1. uzdevums - Izpēti pamatus

Atpazīsti šīs stundas galveno ideju un sasaisti to ar gala projektu "Lielais skaitļu duelītis".

  1. Izlasi stundas izaicinājumu un ar vienu teikumu pieraksti, ko šodien mācīsies par tēmas projektu "Lielais skaitļu duelītis".
  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ā "Lielais skaitļu duelītis".
  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 "Lielais skaitļu duelītis": 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ā "Lielais skaitļu duelītis" 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 plānošanā:

  • Pārāk sarežģītas formulas: Ja paši spēlētāji vai izstrādātājs nesaprot, kā veidojas rezultāts, programmu būs grūti atkļūdot (Debug). Izmanto secīgu aprēķinu, ja nepieciešams.
  • Datu tipu nesaderības (Type mismatch) ignorēšana: Vienmēr plāno, kur būs nepieciešama funkcija int() un kur float(), citādi dators mēģinās veikt matemātiku ar tekstu.
  • Nekonsekventa mainīgo nosaukšana: Ja plānā nosauc mainīgo par speletaja_punkti, bet reālajā kodā raksti punkti, radīsies kļūdas. Jau plānošanas posmā lieto pareizu Snake Case sintaksi.

Pseidokoda un programmas skeleta piemērs

# 1. Sasveicināties ar spēlētāju un izskaidrot spēles noteikumus
# 2. Iegūt 'speletaja_vards' (str) un 'bazes_likme' (int)
# 3. Iegūt 'veiksmes_reizinatajs' (float)
# 4. Veikt aprēķinu: kopejais = (bazes_likme * veiksmes_reizinatajs) + 10
# 5. Parādīt rezultātu, izmantojot f-string
* Šis fails pašlaik neko neizpilda. Tas ir tavs darba plāns koda rakstīšanai! *
⬅ Iepriekšējā stunda Nākamā stunda ➡