Implementácia hry

Herné objekty

Objekty použité v hre
Objekt Popis Vzhľad
Mína Ak hráč klikne na mínu, hra končí. Ikona míny – čierny kruh s hrotmi
Vlajka Označuje miesto kde hráč predpokladá mínu. Ikona vlajky – červená vlajka na tyči
Výhra Zobrazí sa keď hráč odhalí všetky bezpečné políčka. Obrazovka výhry s nápisom You Win
Prehra Zobrazí sa keď hráč klikne na mínu. Obrazovka prehry s nápisom You Lose
Turtle Korytnačka je v tejto implementácii symbolickým hlavným hrdinom a maskotom hry, ktorý sprevádza hráča počas hrania. Ikona korytnačky – maskot hry

Ukážka kódu

Pri implementácii hry som použil viacero metód. Medzi najdôležitejšie patria generovanie mín na hracej ploche a rekurzívne otváranie políčok bez mín.

Generovanie mín

Nasledujúca metóda náhodne umiestni 10 mín na hraciu plochu. Metóda dostane súradnice prvého kliknutia, aby sa zabezpečilo, že hráč na mínu neklikne hneď na začiatku.


    private void SpawnMiny(int riadok, int stlpec) {
        for (int i = 0; i < 10; i++) {
            int randomX = (int)(Math.random() * 9);
            int randomY = (int)(Math.random() * 9);
            if(!pole[randomX][randomY]){
                pole[randomX][randomY] = true;
            } else {
                i--;
            }
        }
    }
    

Rekurzívne otváranie políčok

Keď hráč klikne na políčko bez mín v okolí, namiesto odhalenia jediného políčka sa automaticky otvoria aj všetky susedné bezpečné políčka. Toto správanie zabezpečuje nasledujúca metóda, ktorá volá samu seba pre každého suseda – ide o techniku nazývanú rekurzia.


    public void OtvaranieBlocks(int riadok, int stlpec) {
        if(riadok < 0 || riadok >= sirkaPola) return;
        if(stlpec < 0 || stlpec >= vyskaPola) return;
        int index = riadok * vyskaPola + stlpec;
        if(blocks[index] == null) return;
        this.remove(blocks[index]);
        blocks[index] = null;
        int pocetMin = PocetMinOkolo(riadok, stlpec);
        if(pocetMin > 0){
            return;
        }
        OtvaranieBlocks(riadok-1, stlpec);
        OtvaranieBlocks(riadok+1, stlpec);
        OtvaranieBlocks(riadok, stlpec-1);
        OtvaranieBlocks(riadok, stlpec+1);
    }
    

Gameplay video

Video ukážky hrania hry Minesweeper.

Stiahnutie

Hra je dostupná pre operačný systém Windows.

⬇ Stiahnuť hru (MineSweeper.exe)