4.3. tēma: DOM manipulācija – dinamiska elementu pārvaldība

Tavs šīs stundas izaicinājums: 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).

Teorija: Tīmekļa koordinātu sistēma un CSS pozicionēšana

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.

1. uzdevums: Varoņa sagatavošana CSS vidē

Pārveidot spēlētāja elementu tā, lai tas varētu brīvi pārvietoties spēles laukumā.

Izpildes soļi:

  1. Sava index.html faila spēles konteinerā (piem., #game-container) pievieno jaunu elementu: <div id="speletajs"></div>.
  2. CSS failā konteineram iestati position: relative;.
  3. Spēlētāja CSS piešķir izmērus (piem., 50x50px), krāsu un position: absolute;, kā arī sākuma koordinātas: left: 10px; top: 10px;.

2. uzdevums: Kustības mainīgo izveide un manipulācija

Izmantot JavaScript, lai atjauninātu varoņa pozīciju, nospiežot klaviatūras taustiņus.

Izpildes soļi:

  1. JS faila sākumā izveido divus mainīgos varoņa koordinātām: let varonisX = 10; un let varonisY = 10;. Atrodi HTML elementu: let varonisObj = document.getElementById("speletajs");
  2. Iepriekšējā stundā izveidotajā keydown notikumu klausītājā pievieno loģiku: ja event.key === "ArrowRight", tad varonisX = varonisX + 10;.
  3. Pēc mainīgā palielināšanas, pasaki HTML elementam pārvietoties: varonisObj.style.left = varonisX + "px";. Pārbaudi pārlūkā – varonim jākustas pa labi!

3. uzdevums: Pilna kustība un ekrāna robežas

Pievienot kustību visos četros virzienos un neļaut varonim iziet ārpus spēles laukuma rāmjiem.

Izpildes soļi:

  1. Pievieno else if nosacījumus pārējiem virzieniem (ArrowLeft samazina X, ArrowDown palielina Y, ArrowUp samazina Y). Neaizmirsti atjaunināt arī varonisObj.style.top = varonisY + "px";.
  2. Izmanto if, lai pārbaudītu robežas: if (varonisX < 0) { varonisX = 0; }. Tas neļaus varonim iziet ārpus kreisās malas.
  3. Izveido robežu pārbaudi visām malām (ņemot vērā spēles laukuma platumu un varoņa izmēru). Veic Commit un Push uz GitHub.

Biežākās kļūdas (un kā tās labot):

Koda piemērs

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";
});
Tagad nospiežot labo vai kreiso bultiņu, tavs "div" kvadrātiņš reāli slīdēs pa ekrānu!
⬅ Iepriekšējā stunda Nākamā stunda ➡