ebSkola

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

  1. VS Code ar File → Open Folder atver Desktop/datorika9-tema4 . Ja mapes nav, izveido to darbvirsmā.
  2. Šajā mācību lapā nospied Kopēt sākuma kodu .
  3. VS Code nospied Ctrl+N un ielīmē kodu ar Ctrl+V .
  4. Saglabā ar Ctrl+Shift+S tēmas mapē kā 44.html .
Lejupielādēt 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

  1. Sāc ar 44.html .
  2. Nospied Sākt , tad Apturēt .
  3. 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

  1. Maini atrums no 2 uz 3.
  2. CSS maini pretinieka krāsu. HTML pielāgo spēles nosaukumu.
  3. Funkcijā solis() zem kustības rindas pievieno document.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

  1. HTML pievieno <button onclick="location.reload()">Atjaunot</button> .
  2. Pārlūkā nospied Sākt piecas reizes. Kustība nedrīkst kļūt ātrāka.
  3. Apturi kustību un pārbaudi, ka kvadrāts paliek vietā. Ar Atjaunot atgriez to sākumā apturētā stāvoklī.
  4. 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ā

  1. Ar File → Save All saglabā failus. Atver Source Control ar Ctrl+Shift+G .
  2. Pie Changes nospied + (Stage All Changes). Pārbaudi, ka vajadzīgie faili pārvietojas uz Staged Changes .
  3. Ziņas laukā ieraksti īsu izmaiņu, piemēram, Pabeigts 4.4 darbs . Spied Commit .
  4. 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 .
  5. 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.

  1. Maini intervālu no 30 uz 60 .
  2. Izmēģini un izvēlies savai spēlei piemērotāko vērtību.
Ja kaut kas neizdodas

Palīdzība Git, kontam un darba atvēršanai

Skolotājam: sasniedzamo rezultātu saistība

Šajā nodarbībā vingrina šādu rezultātu daļas no 9. klases saraksta . Piesaiste pati par sevi nenozīmē visa rezultāta apguvi.

Kursa nosacījumi un satura pārklājums