5.4. tēma: Papildfunkciju ieviešana (Power-ups, līmeņi, skaņa)

Tavs šīs stundas izaicinājums: Papildināt spēles prototipu ar unikālām funkcijām, kas uzlabo spēlējamību (Game Juice), piemēram, pieaugošu grūtības pakāpi vai multimediju efektiem.

5.2.1. Definē problēmas būtību un risina izaicinājumus; 2.3.1. Izmanto lietojumprogrammatūras specifiskas funkcijas.

Teorija: "Game Juice" un grūtības līkne

Kas atšķir garlaicīgu spēli no tādas, kuru gribas spēlēt vēlreiz?

1. uzdevums: Audio efektu integrācija

Pievienot skaņas signālus galvenajiem spēles notikumiem, lai sniegtu tūlītēju atgriezenisko saiti.

Izpildes soļi:

  1. Pārliecinies, ka tavā assets/audio/ mapē ir īsi MP3 faili (piem., collect.mp3 un hit.mp3).
  2. JS failā izveido funkciju skaņas atskaņošanai: function atskanotSkanu(failaNosaukums) { new Audio("assets/audio/" + failaNosaukums).play(); }.
  3. Izsauc šo funkciju monētas pacelšanas un sadursmes brīžos.

2. uzdevums: Grūtības pakāpes pieaugums

Iemācīt spēles dzinējam paātrināt darbību, kad spēlētājs kļūst veiksmīgāks.

Izpildes soļi:

  1. Izveido mainīgo let kustibasAtrums = 2; un izmanto to ienaidnieku kustības funkcijā.
  2. Galvenajā ciklā pievieno pārbaudi: if (punkti % 10 === 0 && punkti !== 0) { kustibasAtrums += 0.1; }.
  3. Tas nozīmē: ik pēc 10 iegūtiem punktiem spēle kļūs nedaudz ātrāka un grūtāka.

3. uzdevums: Bonusa elementu (Power-ups) izveide

Ieviest spēlē īpašu objektu, kas sniedz spēlētājam pagaidu priekšrocības.

Izpildes soļi:

  1. Izveido jaunu masīvu vai objektu "SuperMonēta".
  2. Pievieno sadursmes loģiku: ja spēlētājs tai pieskaras, viņš saņem 50 punktus vai papildu dzīvību.
  3. Izmanto setTimeout, lai šāds bonuss uz ekrāna parādītos tikai reizi 15 sekundēs. Veic Commit un Push.

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

Koda piemērs: Skaņa un Līmeņi

// Audio objekta sagatavošana
const punktaSkanas = new Audio("assets/audio/point.mp3");
let limenis = 1;

function savaktPunktus() {
    punkti += 10;
    punktaSkanas.play(); // Atskaņojam skaņu
    
    // Pārbaudām līmeņa maiņu
    if (punkti >= 100 * limenis) {
        limenis++;
        ienaidniekaAtrums += 1;
        document.getElementById("status").innerText = "LĪMENIS " + limenis;
        console.log("Grūtība palielināta!");
    }
    
    atjaunotHUD();
}
⬅ Iepriekšējā stunda Nākamā stunda ➡