4.4 Laiks un automātiska kustība
Šodien: Izveido pretinieku, kura kustību var sākt, apturēt un atsākt.
Īsā teorija
setInterval(solis, 30)
atkārto funkciju apmēram ik pēc 30 milisekundēm. 1000 milisekundes ir viena sekunde.
clearInterval(taimeris)
aptur atkārtošanu. Taimera vērtību glabājam ārpus funkcijām.
Pirms jauna taimera sākšanas apturam iepriekšējo. Tad atkārtots klikšķis nepaātrina spēli.
clearInterval(taimeris);
taimeris = setInterval(solis, 30);
Sākuma kods un darba vieta
Vide: mācību lapa → VS Code
-
VS Code ar
File → Open Folder
atver
Desktop/datorika9-tema4. Ja mapes nav, izveido to darbvirsmā. - Šajā mācību lapā nospied Kopēt sākuma kodu .
- VS Code nospied Ctrl+N un ielīmē kodu ar Ctrl+V .
-
Saglabā ar
Ctrl+Shift+S
tēmas mapē kā
44.html.
Atvērt pilno sākuma kodu
<!DOCTYPE html>
<html lang="lv">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mana spēle</title>
<style>
body { font-family: Arial, sans-serif; max-width: 680px; margin: 24px auto; padding: 16px; line-height: 1.6; }
button, input { font: inherit; padding: 10px; margin: 4px; }
button { cursor: pointer; }
img { max-width: 100%; height: auto; }
[hidden] { display: none !important; }
#laukums { position: relative; width: 300px; height: 220px; max-width: 100%; background: #edf5ff; outline: 2px solid #245b91; overflow: hidden; }
#speletajs, #pretinieks, #moneta { position: absolute; width: 30px; height: 30px; }
#speletajs { background: #245b91; left: 20px; top: 160px; }
#pretinieks { background: #b3261e; left: 220px; top: 160px; }
#moneta { background: #ffca28; left: 140px; top: 160px; border-radius: 50%; }
</style>
</head>
<body>
<h1>Kustīgs pretinieks</h1>
<p>Nospied Sākt vai Apturēt.</p>
<div id="laukums"><div id="pretinieks"></div></div>
<button id="sakt">Sākt</button>
<button id="apturet">Apturēt</button>
<p id="stavoklis">Apturēts</p>
<script>
let x = 0;
let taimeris = null;
const atrums = 2;
function solis() {
x = x + atrums;
const robeza = document.getElementById("laukums").clientWidth - 30;
if (x > robeza) { x = 0; }
document.getElementById("pretinieks").style.left = x + "px";
}
function sakt() {
clearInterval(taimeris);
taimeris = setInterval(solis, 30);
document.getElementById("stavoklis").textContent = "Kustas";
}
function apturet() {
clearInterval(taimeris);
taimeris = null;
document.getElementById("stavoklis").textContent = "Apturēts";
}
document.getElementById("sakt").addEventListener("click", sakt);
document.getElementById("apturet").addEventListener("click", apturet);
document.getElementById("pretinieks").style.left = x + "px";
</script>
</body>
</html>
1. uzdevums
Izmēģini sākšanu un apturēšanu
Vide: VS Code → pārlūks
-
Sāc ar
44.html. - Nospied Sākt , tad Apturēt .
- Pārbaudi kustību un zem pogām redzamo ziņu.
Gatavs, kad: Pretinieks kustas tikai pēc sākšanas un apstājas pēc apturēšanas.
2. uzdevums
Pielāgo kustību
Vide: VS Code
-
Maini
atrumsno 2 uz 3. - CSS maini pretinieka krāsu. HTML pielāgo spēles nosaukumu.
-
Funkcijā
solis()zem kustības rindas pievienodocument.getElementById("stavoklis").textContent = "X: " + x;.
Gatavs, kad: Kustības laikā lapā redzama pretinieka X vērtība.
3. uzdevums
Pievieno sākuma vietas pogu
Vide: VS Code → pārlūks
-
HTML pievieno
<button onclick="location.reload()">Atjaunot</button>. - Pārlūkā nospied Sākt piecas reizes. Kustība nedrīkst kļūt ātrāka.
- Apturi kustību un pārbaudi, ka kvadrāts paliek vietā. Ar Atjaunot atgriez to sākumā apturētā stāvoklī.
- Saglabā un nosūti darbu uz GitHub.
Gatavs, kad: Atkārtota sākšana, apturēšana un atjaunošana darbojas.
Iesniedz 3. uzdevuma rezultātu
Iesniedz pabeigto
44.html
skolotāja norādītajā vietā. Šo pašu versiju saglabā arī GitHub.
Stunda ir ieskaitīta, ja 3. uzdevuma rezultāts atbilst visiem šiem punktiem:
- Pretinieks pārvietojas automātiski ar soli 3 un redzamu X vērtību.
- Pieci sākšanas klikšķi neveido ātrāku kustību.
- Apturēt apstādina; Atjaunot atgriež sākumā bez kustības.
1. un 2. uzdevums sagatavo šo rezultātu. Papildu uzdevums nav vajadzīgs ieskaitei.
Saglabā un nosūti uz GitHub — pogu atgādne
Vide: VS Code / Source Control → GitHub pārlūkā
- Ar File → Save All saglabā failus. Atver Source Control ar Ctrl+Shift+G .
- Pie Changes nospied + (Stage All Changes). Pārbaudi, ka vajadzīgie faili pārvietojas uz Staged Changes .
-
Ziņas laukā ieraksti īsu izmaiņu, piemēram,
Pabeigts 4.4 darbs. Spied Commit . -
Ja šī tēmas mape vēl nav GitHub, spied
Publish to GitHub
un izveido publisku projektu
datorika9-tema4. Jau publicētam projektam spied Sync Changes . Ja pogas nav, atver … → Push . - Pārlūkā atver savu GitHub projektu un pārbaudi faila pēdējās izmaiņas.
Ja Source Control rāda Initialize Repository , vispirms nospied to. Ja parādās kļūda vai sapludināšanas pieprasījums, izmanto palīdzību un palūdz skolotāja atbalstu.
Papildu uzdevums: Padari kustību lēnāku
Sāc, kad 3. uzdevums ir gatavs un iesniegts. Ja vēlies paturēt obligāto versiju, saglabā kopiju ar citu nosaukumu.
-
Maini intervālu no
30uz60. - Izmēģini un izvēlies savai spēlei piemērotāko vērtību.
Ja kaut kas neizdodas
-
Neredzi izmaiņas?
VS Code nospied Ctrl+S. Pārlūkā nospied Ctrl+R. Pārbaudi, ka atvērts tieši
44.html. - Kods redzams kā teksts? Saglabā ar galotni .html. Windows ieslēdz View → Show → File name extensions un pārbaudi, ka beigās nav .txt.
- Poga nestrādā? Pārbaudi, vai neizdzēsi pēdiņu, iekavu vai elementa id. Salīdzini savu laboto vietu ar sākuma kodu.
- Nesaproti nākamo soli? Atrodi pirmo nepabeigto soli un parādi skolotājam tieši šo vietu.