›_ ebskola.lv
← 4.5

4.6 Noslēguma projekts: Spēles dzinēja prototips

Stundas uzdevums: Apvienot 4. tēmā apgūtās funkcijas, notikumus, DOM manipulāciju, taimerus un sadursmes vienā pārbaudāmā spēles dzinēja prototipā.

SR 2.6.1. Programmas strukturēšana un algoritmi SR 1.3.4. Risinājuma izvērtēšana SR 1.4.2. Testēšana un pilnveide SR 5.2.4. Sadarbība SR 2.6.3. Programmējamas ierīces, roboti un sensori

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: spēles dzinējs ir sakārtots cikls

Šajā prototipā nav jāievieš jauna spēles mehānika. Mērķis ir savienot jau apgūto: starta funkciju, notikumu klausītājus, elementu pārvietošanu, laika kontroli un sadursmju pārbaudi. Ja katra daļa ir atsevišķā funkcijā, kļūdas var atrast ātrāk.

function saktSpeli() {
  punkti = 0;
  speleAktiva = true;
  taimeris = setInterval(atjaunotSpeli, 100);
}

function beigtSpeli() {
  speleAktiva = false;
  clearInterval(taimeris);
}
Šeit izmantots tikai iepriekš apgūtais: funkcijas, mainīgie, taimeris un spēles stāvoklis.

70 min plāns: integrācija ~25 min, koda sakārtošana ~20 min, pāru testēšana un kļūdu labošana ~25 min.

Praktiskie uzdevumi

1. uzdevums - Iesildies ar gatavu piemēru

Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 4.6 Noslēguma projekts: Spēles dzinēja prototips; detalizētu izpratni veidosi nākamajos uzdevumos.

Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.

function saktSpeli() {
  punkti = 0;
  speleAktiva = true;
  taimeris = setInterval(atjaunotSpeli, 100);
}

function beigtSpeli() {
  speleAktiva = false;
  clearInterval(taimeris);
}
  1. Atver darba failu vai rīku. JavaScript fragmentu ievieto script.js failā vai lapas esošajā skripta daļā.
  2. Nokopē visu piemēra bloku no šī uzdevuma un ielīmē to norādītajā vietā.
  3. Palaid kodu tieši tādu, kāds tas ir, un pārliecinies, ka parādās rezultāts, izvade vai vismaz nav kļūdas paziņojuma.
  4. Atrodi vienu drošu vietu, ko drīkst mainīt: tekstu, skaitli, krāsu, mainīgā vērtību vai testa ierakstu.
  5. Maini tikai šo vienu vērtību un palaid kodu vēlreiz.
  6. Salīdzini rezultātu pirms un pēc izmaiņas. Ja parādās kļūda, atcel pēdējo izmaiņu un palaid vēlreiz.
  7. Turpini pie 2. uzdevuma tikai tad, kad šis mazais piemērs darbojas.

2. uzdevums - Ievieto algoritmu spēles prototipā

Pievieno dzinējam vienu nelielu, atkārtoti lietojamu spēles mehāniku.

  1. Izvēlies vienu mehāniku: kustību, punktu skaitīšanu, laika atskaiti, sadursmi, līmeņa maiņu vai spēles beigu nosacījumu.
  2. Nosauc funkcijas un mainīgos pēc to lomas, piemēram, atjaunoSpeletaju(), punkti, laiks vai parbaudaSadursmi().
  3. Uzraksti funkciju, kas nolasa esošo stāvokli, veic vienu skaidru darbību un atjauno rezultātu ekrānā.
  4. Izsauc funkciju no pogas, tastatūras notikuma, taimera vai spēles cikla.
  5. Pievieno vienu īsu koda komentāru pie sarežģītākās loģikas vietas.
  6. Pārbaudi, ka mehānika darbojas kopā ar iepriekš izveidoto prototipa daļu.
  7. Salabo pirmo atrasto kļūdu pirms pievieno nākamo funkciju.
  8. Veic Git commit ar īsu ziņu par pievienoto dzinēja mehāniku.

3. uzdevums - Testē prototipu un izdari secinājumu

Pārbaudi, vai spēles dzinēja algoritms darbojas paredzami.

  1. Izveido trīs testa scenārijus: parasta spēlētāja darbība, robežgadījums un kļūdaina vai ļoti ātra darbība.
  2. Palaid parasto scenāriju un pārbaudi redzamo rezultātu ekrānā.
  3. Palaid robežgadījumu ar mazāko, lielāko vai tukšāko vērtību, ko šī mehānika pieļauj.
  4. Palaid kļūdaino scenāriju un pārbaudi, vai prototips nesabrūk.
  5. Izlabo vienu konkrētu problēmu JavaScript kodā, datos vai DOM sasaistē.
  6. Pārbaudi labojumu vēlreiz ar visiem trim scenārijiem.
  7. Beigās pieraksti vienu secinājumu: kura funkcija vai algoritma solis vislabāk palīdzēja saprast tēmu 4.6 Noslēguma projekts: Spēles dzinēja prototips.

Papildu uzdevums - Pievieno mazu dzinēja uzlabojumu

Ja pamatdarbs ir pabeigts, paplašini prototipu ar vienu nelielu programmētu uzlabojumu.

  1. Izvēlies vienu papildinājumu, kas izmanto esošo spēles stāvokli vai funkcijas.
  2. Pievieno dzīvību sistēmu: ienaidnieka pieskāriens atņem dzīvību, nevis uzreiz beidz spēli.
  3. Definē let dzivibas = 3; un pievieno <p id="dzivibas">Dzīvības: 3</p>.
  4. Kad notiek sadursme, samazini dzīvības; ja tās sasniedz 0 - izsauc beigtSpeli().
  5. Savieno papildinājumu ar prototipa galveno algoritmu un pārbaudi, ka tas darbojas.
  6. Veic git commit -m "Add lives system to game engine".
  7. Demonstrē klasesbiedram - vai viņš saprot, cik dzīvību ir un kad spēle beigsies?

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

Vērtēšanas kritēriji (SLA)

Kritēriji Sācis apgūt (1-3) Turpina apgūt (4-6) Apguvis (7-8) Apguvis padziļināti (9-10)
1. Funkcionalitāte un spēles loģika Spēle palaižas, bet cikla (start/stop) vadība nedarbojas vai pārlūkprogramma regulāri "uzkaras". Spēli var sākt, taču apstādināšanas (Game Over) loģikā ir nepilnības (piem., objekti turpina kustēties fonā). Spēles cikls (sākums, gaita, beigas) darbojas stabili un bez kļūdām. Visi intervāli tiek korekti apstādināti. Loģika ir nevainojama, patstāvīgi ieviesti papildus stāvokļi (piemēram, pauze vai līmeņu pārslēgšanās), kas darbojas stabili.
2. Koda kvalitāte ("Clean Code") Kods ir grūti lasāms, mainīgo nosaukumi ir nejauši (a, b, x), nav izmantoti komentāri. Kods ir daļēji sakārtots, izmantoti daži jēgpilni nosaukumi, bet palikuši lieki testa kodi (piem., nevajadzīgi console.log). Kods ir strukturēts, mainīgie ir jēgpilni, pievienoti skaidrojoši komentāri pie galvenajām funkcijām. Liekais kods ir izdzēsts. Kods ir modulārs, loģiski sadalīts pa atsevišķām funkcijām, pilnībā ievērojot labās prakses (Clean Code) principus.
3. Atkļūdošana un sadarbība Spēj pamanīt vizuālas kļūdas savā spēlē, bet kļūdu labošanā nepieciešams nepārtraukts skolotāja atbalsts. Izmanto konsoli, lai atrastu vienkāršas sintakses kļūdas. Dalās ar kodu, bet nespēj mērķtiecīgi testēt cita darbu. Patstāvīgi atrod un novērš savas loģikas kļūdas. Veiksmīgi testē klasesbiedra spēli un spēj izskaidrot atrasto kļūdu cēloni. Atrod kļūdas, izskaidro to iemeslus, piedāvā risinājumus un palīdz klasesbiedram tos integrēt.

Pašpārbaudes saraksts

⬅ Iepriekšējā stunda Tēmas apkopojums ➡