Táto stránka pre svoju správnu funkčnosť vyžaduje súbory cookies. Slúžia na authentifikáciu návštevníka, analýzu návštevnosti a reklamnú personalizáciu.
logo
Prihlásenie / Registrácia
mobile

Zavrieť
 

Snake v HTML5 – IV. Zvukové efekty

V poslednej časti miniseriálu „Snake v HTML 5“ si náš projekt obohatíme o zvukové efekty.

Na našej ceste k vytvoreniu hry Snake nám ostal už len jeden krok, a to doplnenie zvukových efektov. 

Zvuky, ktoré chcete použiť, si môžete vyhľadať na internete alebo prípadne použiť sadu z nasledujúceho  > odkazu <(jedná sa o súbory pochádzajúce zo stránky https://opengameart.org) . 
Súbory vo formáte MP3 nazveme crash.mp3, move.mp3 a point.mp3. Ako už názvy napovedajú, súbor crash sa spustí pri narazení hada do steny (prípadne do samého seba), move pri jeho pohybe a point oznámi získanie bodu zjedením jedla.

Rovnako ako obrázky, tak aj zvuky musíme pripraviť skôr, než sa hra začne. Referenciu každého z nich (audio_move, audio_crash a audio_point) si uschováme v objekte Game.

main.js

const Game = {
    ...

    //Obrazok jedla
    img_food: null,

    //Zvuky
    audio_move: null,
    audio_crash: null,
    audio_point: null,
    ...
};

 

Pripravíme si inicializačnú metódy CreateSound, kde si vytvoríme objekt triedy Audio, zaregistrujeme obsluhu udalosti SoundLoaded a samozrejme povýšime hodnotu ItemsToLoad. Ďalej to bude metóda PlaySound, ktorou budeme zvolený zvuk prehrávať.

main.js

const Game = {
    ...

    CreateSound: function (Source) {
        let Sound = new Audio();
        Sound.src = "audio/" + Source + '.mp3';
        Sound.setAttribute("preload", "auto");
        Sound.setAttribute("controls", "none");
        this.ItemsToLoad++;
        Sound.addEventListener('canplay', this.SoundLoaded);
        return Sound;
    },

    SoundLoaded: function () {
        this.removeEventListener('canplay', Game.SoundLoaded);
        Game.ItemsToLoad--;
        Game.CheckLoadedFiles();
    },

    PlaySound: function (snd) {
        snd.currentTime = 0;
        snd.play();
    }
}

 

Inicializáciu zvukových premenných vykonáme v metóde LoadGame.

main.js

const Game = {
    ...

    LoadGame: function () {
        //Nacitanie obrazku jedla
        this.img_food = this.CreateImage("food");

        //Nacitanie zvukov
        this.audio_move = this.CreateSound("move");
        this.audio_crash = this.CreateSound("crash");
        this.audio_point = this.CreateSound("point");
        ...
    }
}

 

Ostáva nám už len pridať volania PlaySound na relevantné miesta.

main.js

const Game = {
    ...

    Crash: function () {
        this.PlaySound(this.audio_crash);
        this.DisplayMsg("Game over", "Press spacebar to restart...");
    },

    MoveNext: function () {
        ...

        let NextFieldType = this.GameArray[NewLeft][NewTop];
        switch (NextFieldType) {
            case FieldStates.fs_Empty: //Pole je prazdne, mozne sa tam presunut
                {
                    this.PlaySound(this.audio_move);
                    this.MoveSnakeBlocks(NewLeft, NewTop, false);
                }
                break;
             ...

            case FieldStates.fs_Food:
                {
                    this.PlaySound(this.audio_point);
                    this.MoveSnakeBlocks(NewLeft, NewTop, true);
                   ...
                }
                break;
        }
        ...
    }
}

 

Implementácia zvukových efektov je týmto dokončená, rovnako aj naša hra. Posledné úpravy v projekte si teda môžeme uložiť a vyskúšať ich funkčnosť vo webovom prehliadači.

Aj keď táto séria článkov o hre Snake končí, možnosti na jej vylepšenie ani z ďaleka nekončia. Čo tak pridať postupné zvyšovanie rýchlosti hry, rozdeliť ju do niekoľkých úrovní (levelov), postupne pridávať extra prekážky pre hada a pod.? Berte to ako výzvu, fantázii sa medze nekladú.

Kompletný zdrojový kód hry je možné nájsť na GitHube, prípadne si ju môžete rovno aj zahrať na nasledujúcom odkaze.

Ak sa vám táto krátka séria článkov páčila, prípadne ste našli nejakú chybu alebo  len máte návrh na zlepšenie, prosím zanechajte komentár.

Je možné, že niekedy v budúcnosti vznikne podobný seriál o nejakej ďalšej hre, napríklad v štyle Tetris, Packman a pod. Uvítam vaše návrhy v diskusii.

 

Codeblog
Ostatné texty v seriály

Snake v HTML5 – I. Popis riešenia a základná konštrukcia 0
...
Snake v HTML5 – III. Herná logika 2/2 0
Snake v HTML5 – IV. Zvukové efekty 0
Diskusia

Žiadne príspevky v diskusii.

Nový príspevok

Na prispievanie do diskusie musíte byť prihlásený.