Stundas uzdevums: Pielietot masīvus, lai organizētu, saglabātu un atjauninātu vairākus saistītus spēles elementus (inventāru un rezultātus) vienuviet, veidojot interaktīvu datu bāzi.
2.6.1. Izmanto atbilstošas vienkāršas datu struktūras; 2.4.2. Strukturē datus, izvēloties racionālākos paņēmienus.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ļā.
Mainīgais ir kā viena kaste. Bet ko darīt, ja klasei ir projekta materiālu saraksts ar 10 lietām? Mēs izmantojam masīvu (Array) – tas ir kā vilciens, kur katrā vagonā ir savs saturs. Programmēšanā vagonus (indeksus) sāk skaitīt no 0!
| Darbība | Kods (Sintakse) | Skaidrojums |
|---|---|---|
| Izveidot | let soma = ["Koks", "Akmens"]; |
Izmanto kvadrātiekavas [ ] un komatus. |
| Izlasīt (Indekss) | console.log( materiali[0] ); |
Dabū pirmo elementu ("Marķieris"). |
| Pievienot | materiali.push("Uzlīmes"); |
Pieliek jaunu vagonu vilciena beigās. |
| Saskaitīt | materiali.length |
Pasaka, cik elementu kopā ir masīvā. |
Š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 3.4 Masīvi (Arrays) un datu strukturēš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>3.4 Masīvi (Arrays) un datu strukturēš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: 3.4 Masīvi (Arrays) un datu strukturēšana";
});
index.html, style.css un script.js.Pievieno šīs stundas paņēmienu kā nelielu, lietotājam redzamu projekta daļu.
script.js un izveido masīvu: let rezultati = [];index.html saraksta elementu <ul id="rezultatu-saraksts"></ul>.script.js funkciju paradītRezultatus(), kas ar innerHTML izveido <li> elementu katram rezultātam.pierakstitRezultatu(p), kas izsauc rezultati.push(p) un tad paradītRezultatus().pierakstitRezultatu(punkti) no tās.innerHTML tiek notīrīts pirms jauna satura.git commit -m "Add highscore array and display".Pārbaudi, vai algoritms darbojas paredzami vairākās situācijās.
rezultati - pārbaudi, ka redzams masīvs ar iepriekš ievadītajiem datiem.rezultati.push(999) - pārbaudi, ka saraksts ekrānā atjaunojas ar jaunu elementu.rezultati[0] - pārbaudi, ka izvadās pirmais (ne otrais) elements.rezultati.length - pārbaudi, ka tas sakrīt ar reālo elementu skaitu lapā.rezultati = []; paradītRezultatus();.Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
let labakais = Math.max(...rezultati);<p id="labakais"></p> un atjauno to pēc katras iesniegšanas.rezultati = []) - vai Math.max() neatgriež -Infinity?git commit -m "Track and display best score".masivs[1]. Atceries: pirmā elementa numurs ir 0!masivs[3], JavaScript atbildēs ar "undefined", jo ceturtā vagona nav.[ ], nevis { }. Figūriekavas kalpo objektu izveidei un funkciju blokiem.// 1. Masīva definēšana
let spelesLimeni = ["Vienkāršs", "Vidējs", "Sarežģīts"];
let iegutiePunkti = [10, 50, 100];
// 2. Elementa nolasīšana (izvada: Vidējs)
console.log("Izvēlētais līmenis: " + spelesLimeni[1]);
// 3. Masīva papildināšana un garuma noskaidrošana
spelesLimeni.push("Eksperts"); // Pievienojam 4. līmeni
console.log("Kopējais līmeņu skaits: " + spelesLimeni.length);
// 4. Integrācija HTML
document.getElementById("nakamais-limenis").innerText = spelesLimeni[spelesLimeni.length - 1];
// length - 1 vienmēr atgriezīs pašu pēdējo elementu!