Stundas uzdevums: Izstrādāt un pielietot atkārtoti izmantojamus koda blokus (funkcijas), lai optimizētu spēles loģiku un izvairītos no koda dublēšanās.
2.6.1. Ievēro programmas pieraksta un strukturēšanas labās prakses ieteikumus; 1.3.4. Izvēlas programmu izvēlētā izstrādājuma īstenošanai.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ļā.
Funkcija ir kā recepte – tu to uzraksti vienreiz, bet vari "pagatavot" (izsaukt) cik reizes vien vēlies. Tā ļauj sagrupēt kodu loģiskos blokos.
function, iedodam tai nosaukumu un figūriekavās {} ieliekam kodu, kas būs jāizpilda.saktSpeli();.pieskaititPunktus(10) un pieskaititPunktus(50) izmanto vienu un to pašu funkciju, bet ar dažādām vērtībām.Š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.1 Funkcijas un koda atkārtota izmantoš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.
<section class="iesildisanas-demo">
<h2>4.1 Funkcijas un koda atkārtota izmantošana</h2>
<p id="rezultats">Sākuma teksts</p>
<button id="poga">Pārbaudīt</button>
</section>
.iesildisanas-demo {
padding: 16px;
border: 2px solid #FFB142;
border-radius: 6px;
}
.iesildisanas-demo button {
cursor: pointer;
}
const rezultats = document.querySelector("#rezultats");
const poga = document.querySelector("#poga");
poga.addEventListener("click", () => {
rezultats.textContent = "Kods darbojas: 4.1 Funkcijas un koda atkārtota izmantošana";
});
index.html, style.css un script.js.Pievieno šīs stundas paņēmienu kā nelielu, lietotājam redzamu projekta daļu.
script.js un pārraksti punktu pievienošanu kā funkciju ar parametru: function pievienotPunktus(daudzums) { punkti += daudzums; atjaunotEkranu(); }pievienotPunktus(10) no kādas pogas HTML failā.zaudētDzivibu(), kas atņem vienu dzīvību un atjauno <p id="dzivibas">.restartētSpeli(), kas atjauno gan punktus, gan dzīvības uz sākuma vērtībām.restartētSpeli() tiešām atjauno visus datus, ne tikai vienu.git commit -m "Add reusable game functions".Pārbaudi, vai algoritms darbojas paredzami vairākās situācijās.
pievienotPunktus(50) - pārbaudi, ka punkti atjaunojas ekrānā.pievienotPunktus(50) vēlreiz - pārbaudi, ka rezultāts ir 100, ne 50.zaudētDzivibu() trīs reizes - pārbaudi, ka dzīvību skaits kļūst 0.restartētSpeli() - pārbaudi, ka punkti un dzīvības atgriežas sākuma vērtībās.pievienotPunktus(daudzums) nekā divas atsevišķas?Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
iestatītLimeni(n), kas maina limenis = n un atjauno <p id="limenis">.onclick="iestatītLimeni(limenis + 1)".restartētSpeli(), lai tā arī atjauno limenis = 1.git commit -m "Add level function and full restart".function start() {...}, bet pārlūkā nekas nenotiek. Tu aizmirsi to izsaukt! Neaizmirsti pievienot start(); faila beigās.let) funkcijas IEKŠPUSĒ, tas "nomirs" brīdī, kad funkcija beigs darbu. Ārpus funkcijas tu to neredzēsi. Tāpēc galvenos spēles datus (punktus, dzīvības) vienmēr definē faila augšā, ārpus jebkuras funkcijas!saktSpeli (bez iekavām), JavaScript tikai sapratīs, ka tāda funkcija eksistē, bet to nepalaidīs. Vienmēr vajag saktSpeli().// Globālie mainīgie (redzami visur)
let spelesPunkti = 0;
// 1. Funkcijas definēšana (ar parametru)
function iegutBonuspunktus(lietasVertiba) {
spelesPunkti = spelesPunkti + lietasVertiba;
console.log("Iegūti bonusa punkti! Tagad tev ir " + spelesPunkti + " punkti.");
// 2. Funkcija var saturēt IF blokus!
if (spelesPunkti >= 100) {
document.getElementById("status").innerText = "Jauns līmenis atbloķēts!";
}
}
// 3. Funkcijas izsaukšana dažādās situācijās
iegutBonuspunktus(10); // Spēlētājs atrisina īso jautājumu
iegutBonuspunktus(50); // Spēlētājs pabeidz klases izaicinājumu
iegutBonuspunktus(50); // Spēlētājs pabeidz vēl vienu izaicinājumu (kopā 110 punkti -> Jauns līmenis!)