4.1. tēma: Funkcijas un koda atkārtota izmantošana

Tavs šīs stundas izaicinājums: Izstrādāt un pielietot atkārtoti izmantojamus koda blokus (funkcijas), lai optimizētu spēles loģiku un izvairītos no koda dublēšanās.

2.6.1. Ievēro programmas pieraksta un strukturēšanas labās prakses ieteikumus; 1.3.4. Izvēlas programmu izvēlētā izstrādājuma īstenošanai.

Teorija: Koda "Receptes" (Funkcijas)

Funkcija ir kā recepte – tu to uzraksti vienreiz, bet vari "pagatavot" (izsaukt) cik reizes vien vēlies. Tā ļauj sagrupēt kodu loģiskos blokos.

1. uzdevums: Pirmās funkcijas definēšana un izsaukšana

Izveidot vienkāršu funkciju, kas veic konkrētu darbību spēlē (piemēram, atjaunina dzīvības HTML lapā).

Izpildes soļi:

  1. Savā script.js failā definē jaunu funkciju: function zaudetDzivibu() { ... }.
  2. Figūriekavās ieraksti loģiku: samazini dzīvību mainīgo par 1 un atjauno HTML elementa tekstu, lai parādītu jauno dzīvību skaitu.
  3. Zem funkcijas bloka izsauc to divas reizes, uzrakstot zaudetDzivibu(); zaudetDzivibu();. Pārbaudi pārlūkā, vai dzīvības patiešām samazinājās par 2!

2. uzdevums: Funkcija ar parametriem

Izveidot elastīgu funkciju punktu pieskaitīšanai, kas spēj pieņemt dažādus lielumus kā "iekšējos mainīgos".

Izpildes soļi:

  1. Definē funkciju ar parametru iekavās: function pieskaititPunktus(daudzums) { ... }.
  2. Funkcijas iekšienē izmanto šo parametru: punkti = punkti + daudzums; un izvadi jauno rezultātu konsolē.
  3. Izsauc funkciju ar dažādām vērtībām: pieskaititPunktus(10); (pacelta monēta) un pieskaititPunktus(100); (uzvarēts boss). Vēro, kā mainās kopējais rezultāts.

3. uzdevums: Vērtības atgriešana (Return)

Izstrādāt funkciju, kas aprēķina datus (piemēram, spēlētāja līmeni) un nosūta rezultātu atpakaļ galvenajai programmai.

Izpildes soļi:

  1. Izveido funkciju function noteiktLimeni(esosiePunkti) { ... }.
  2. Iekšā uzraksti loģiku: if (esosiePunkti > 100) { return 2; } else { return 1; }. Vārds return nozīmē, ka funkcija beidz darbu un "izspļauj" šo vērtību.
  3. Izsauc to un saglabā rezultātu mainīgajā: let mansLimenis = noteiktLimeni(punkti);. Izvadi šo līmeni HTML lapā. Sinhronizē darbu ar GitHub.

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

Koda piemērs

// Globālie mainīgie (redzami visur)
let spelesPunkti = 0;

// 1. Funkcijas definēšana (ar parametru)
function iegutLaupijumu(lietasVertiba) {
    spelesPunkti = spelesPunkti + lietasVertiba;
    console.log("Iegūts laupījums! Tagad tev ir " + spelesPunkti + " punkti.");
    
    // 2. Funkcija var saturēt IF blokus!
    if (spelesPunkti >= 100) {
        document.getElementById("status").innerText = "Jauns līmenis atbloķēts!";
    }
}

// 3. Funkcijas izsaukšana dažādās situācijās
iegutLaupijumu(10); // Spēlētājs atrod mazu monētu
iegutLaupijumu(50); // Spēlētājs atrod dārgumu lādi
iegutLaupijumu(50); // Spēlētājs atrod vēl vienu lādi (kopā 110 punkti -> Jauns līmenis!)
Konsolē:
Iegūts laupījums! Tagad tev ir 10 punkti.
Iegūts laupījums! Tagad tev ir 60 punkti.
Iegūts laupījums! Tagad tev ir 110 punkti.

HTML elementā (#status): Jauns līmenis atbloķēts!
⬅ Tēmas apkopojums Nākamā stunda ➡