Stundas uzdevums: Izstrādāt algoritmu spēles varoņa vizuālai pārvietošanai pa ekrānu, mainot tā CSS koordinātas reāllaikā caur JavaScript.
2.6.1. Pieraksta, lasa un izpilda algoritmus; 2.4.7. Veido kompleksu pieeju (apvieno CSS un JS).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ļā.
Lai mēs varētu kustināt elementu (piemēram, spēlētāja kvadrātu vai attēlu) ar JavaScript, tam HTML/CSS vidē ir jābūt "atrautam" no parastās teksta plūsmas.
position: absolute; (kustas attiecībā pret savu rāmi) vai position: fixed; (kustas attiecībā pret visu logu). Tā vecākam (spēles laukumam) jābūt position: relative;.style.left (X) un style.top (Y) īpašības. Svarīgi: tām vienmēr jāpievieno teksta mērvienība "px"!Š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.3 DOM manipulācija – dinamiska elementu pārvaldība; 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.3 DOM manipulācija – dinamiska elementu pārvaldība</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.3 DOM manipulācija – dinamiska elementu pārvaldība";
});
index.html, style.css un script.js.Pievieno šīs stundas paņēmienu kā nelielu, lietotājam redzamu projekta daļu.
position: relative; un spēlētājam - position: absolute;.script.js un definē let spX = 180; let spY = 250;.kustinat(dx, dy), kas palielina/samazina spX un spY un atjauno style.left un style.top."px": el.style.left = spX + "px".kustinat(-10, 0) un kustinat(10, 0).overflow: hidden;.git commit -m "Add DOM-based player movement".Pārbaudi, vai algoritms darbojas paredzami vairākās situācijās.
style.left mainās.console.log("X: " + spX + " Y: " + spY) funkcijai kustinat.dx no 10 uz 20 - pārbaudi, ka kustība kļūst ātrāka.Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
<div id="moneta" style="position:absolute;width:20px;height:20px;background:gold;border-radius:50%;"></div> laukumā.script.js un pievieno funkciju parvietotMonetu(), kas piešķir monētai nejaušas koordinātes.parvietotMonetu() lapas ielādes laikā un pēc katras "savākšanas".git commit -m "Add collectable coin element".position: absolute; CSS failā. Bez tā left un top īpašības vienkārši nedarbojas.varonisObj.style.left = varonisX; (bez + "px"), pārlūks to nesapratīs. Skaitlim obligāti jāpievieno teksta mērvienība.let varonisX = 50;
let varonisY = 50;
let varonisObj = document.getElementById("speletajs");
document.addEventListener("keydown", function(event) {
// 1. Mainām koordinātas
if (event.key === "ArrowRight") {
varonisX += 10; // Īsāks pieraksts vietā varonisX = varonisX + 10
} else if (event.key === "ArrowLeft") {
varonisX -= 10;
}
// 2. Robežu pārbaude (pieņemot, ka laukums ir 500px plats un varonis 50px)
if (varonisX < 0) {
varonisX = 0; // Neļauj iziet ārpus kreisās malas
} else if (varonisX > 450) {
varonisX = 450; // Neļauj iziet ārpus labās malas
}
// 3. Vizuālā atjaunināšana (SVARĪGI!)
varonisObj.style.left = varonisX + "px";
});