Stundas uzdevums: Apvienot UI elementus ar spēles dzinēju, nodrošinot pilnu spēles ciklu: palaišanu, aktīvo darbību un rezultātu fiksēšanu.
2.6.1. Programmē un strukturē kodu; 2.6.2. Veic algoritmu un programmu testēšanu.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 tikai beigās pieraksti vienu secinājumu. 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ļā.
Laba spēle sastāv no skaidriem stāvokļiem (States). Tavai programmai ir jāzina:
// Spēles stāvokļa pārvaldība
const spele = { dzivibas: 3, punkti: 0, limenis: 1 };
function zaudet_dzivibu() {
spele.dzivibas--;
if (spele.dzivibas <= 0) gameOver();
}
Š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 5.3 Spēles pamatloģikas programmēšana; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
// Spēles stāvokļa pārvaldība
const spele = { dzivibas: 3, punkti: 0, limenis: 1 };
function zaudet_dzivibu() {
spele.dzivibas--;
if (spele.dzivibas <= 0) gameOver();
}
script.js failā vai lapas esošajā skripta daļā.Pievieno šīs stundas paņēmienu kā nelielu, lietotājam redzamu projekta daļu.
script.js un izveido stāvokļa objektu: const spele = { punkti: 0, dzivibas: 3, limenis: 1, aktiva: false };saktSpeli(): atiestatiet spele.punkti, spele.dzivibas un iestati spele.aktiva = true.atjaunotHud(), kas vienlaikus atjauno visus HUD elementus (#punkti, #dzivibas, #limenis).atjaunotHud() no saktSpeli(), zaudetDzivibu() un pievienotPunktus().git commit -m "Implement full game state machine".Pārbaudi, vai algoritms darbojas paredzami vairākās situācijās.
spele.aktiva === false pēc beigu ekrāna parādīšanās.spele nekā daudzus atsevišķus mainīgos.Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
spele.punkti >= 50, palielini ienaidnieka ātrumu.spele.atrums = 3 spēles ciklā vietā, kur iepriekš bija fiksēts skaitlis.spele.atrums = 6.git commit -m "Add difficulty scaling at 50 points".clearInterval() pirms jauna taimera sākšanas.saktSpeli() sākumā manuāli iestati dzivibas = 3; punkti = 0;.let spēleDarbojas = false; un pārbaudi to pirms kustības veikšanas.let spelesIntervals;
let punkti = 0;
function saktSpeli() {
// 1. Atiestatām datus
punkti = 0;
atjaunotHUD();
// 2. UI vadība
document.getElementById("start-screen").style.display = "none";
// 3. Palaižam dzinēju
spelesIntervals = setInterval(galvenaisCikls, 20);
}
function galvenaisCikls() {
kustinatObjektus();
parbauditSadursmes();
}
function beigtSpeli() {
clearInterval(spelesIntervals);
document.getElementById("final-score").innerText = punkti;
document.getElementById("game-over-screen").style.display = "block";
}