Tavs šīs stundas izaicinājums: Izveidot automātisku spēles ciklu, izmantojot laika kontroles funkcijas, lai spēles elementi (šķēršļi, laika atskaite) darbotos patstāvīgi bez lietotāja iejaukšanās.
2.6.1. Pieraksta un izpilda algoritmus; 3.4.3. Skaidro tehnoloģisko procesu norisi (reāllaika sistēmas).Gandrīz visas datorspēles pamatā ir "Game Loop" – kods, kas atkārtojas desmitiem reižu sekundē (FPS - frames per second). Tas dara trīs lietas: nolasa spēlētāja ievadi, atjaunina pozīcijas un pārzīmē ekrānu.
Izmantot `setInterval`, lai izveidotu laika atskaiti, kas samazina atlikušo spēles laiku ik sekundi.
index.html faila saskarnē pievieno: <h3>Atlikušais laiks: <span id="laiks">30</span></h3>.let atlikusaisLaiks = 30;.function laikaAtskaite() { ... }, kas samazina atlikusaisLaiks par 1 un atjaunina HTML innerText.let spelesTaimeris = setInterval(laikaAtskaite, 1000);. Pārbaudi pārlūkā, kā skaitļi paši nomainās ik sekundi!Iemācīties apturēt laika atskaiti, kad tā sasniedz nulli, lai neaizietu negatīvos skaitļos.
laikaAtskaite() funkciju ar if sazarojumu.if (atlikusaisLaiks <= 0) { ... }.clearInterval(spelesTaimeris); un izvadi uz ekrāna ziņojumu "Laiks beidzies!". Pārbaudi kodu, uzliekot sākuma laiku uz 3 sekundēm, lai ātrāk notestētu.Izmantot ātru intervālu, lai izveidotu plūdenu objekta animāciju ekrānā.
<div id="ienaidnieks"></div> (ar sarkanu krāsu un `position: absolute;` CSS failā).let ienaidnieksY = 0;.let ienaidniekaKustiba = setInterval(kustinatIenaidnieku, 20);.kustinatIenaidnieku() katru reizi palielini ienaidnieksY par 2 un atjaunini document.getElementById("ienaidnieks").style.top = ienaidnieksY + "px";. Ienaidniekam jāsāk "krist" uz leju! Sinhronizē darbu ar GitHub.let spelesTaimeris = setInterval(...) funkcijas iekšpusē, tu nevarēsi to apturēt ar clearInterval() citā funkcijā (Scope kļūda). Taimera mainīgo vienmēr definē faila sākumā!setInterval, tiek izsaukta vairākas reizes (piemēram, katru reizi nospiežot "Sākt spēli"), tiks palaisti vairāki paralēli taimeri, un laiks vai kustība kļūs neprātīgi ātra. Vienmēr pārbaudi, vai iepriekšējais intervāls ir apturēts pirms jauna sākšanas....style.top = Y + "px").let atlikusaisLaiks = 10;
// Definējam mainīgo intervālam, lai vēlāk to varētu apturēt
let taimerisID;
function atjauninotLaiku() {
atlikusaisLaiks--; // Samazinām par 1
document.getElementById("laiks").innerText = atlikusaisLaiks;
// Pārbaudām, vai laiks beidzies
if (atlikusaisLaiks <= 0) {
clearInterval(taimerisID); // Apturam taimeri
console.log("Spēle beigusies! Laiks iztecēja.");
// Šeit mēs varētu apturēt arī ienaidnieku kustību
// clearInterval(ienaidniekaKustiba);
}
}
// Palaižam taimeri ik pēc 1000 milisekundēm (1 sekunde)
taimerisID = setInterval(atjauninotLaiku, 1000);