Miny - Generujeme pole min

Miny - Generujeme pole min

Tento článek je součástí porovnání programovacích jazyků C#, Java a GameMaker při tvorbě klasických Min (MineSweeper) viz: -> Miny aneb porovnání programovacích jazyků C#, Java, GM

Nyní si vytvoříme pole datového typu boolean o rozměrech stejných jako má tabulka a nastavíme náhodně, na kterých souřadnicích budou miny.

Generování min v C#

Cyklus, který kontroluje počet vytvořených min a poté náhodně generuje souřadnice a pokud na nich není mina, pak ji tam vytvoří.

private bool[,] _minesArray;

// určí souřadnice min
private void generateMines()
{
        _minesArray = new bool[_xLength, _yLength];
        int i = 0;

        while (i < _countOfMines)
        {
                int x = rand.Next(_xLength);
                int y = rand.Next(_yLength);

                if (!_minesArray[x, y])
                {
                        _minesArray[x, y] = true;
                        i++;
                }
        }
}

Generování min v Javě

Cyklus je obdobný jako v C#.

public boolean[][] mines_array;

// určí souřadnice min
private void generateMinesArray()
{
        mines_array = new boolean[x_length][y_length];
        int i = 0;

        while (i < count_of_mines)
        {
                int x = rand.nextInt(x_length);
                int y = rand.nextInt(y_length);

                if (!mines_array[x][y])
                {
                        mines_array[x][y] = true;
                        i++;
                }
        }
}

Generování min v GameMaker

V GM použijeme náhodný výběr instance, poté přistoupíme k jejím proměnným a nastavíme minu na true. Pokud již mina je zvýšíme počet opakování o jedna - tím pádem se bude generovat do té doby než bude vygenerován požadovaný počet min.

// nastavení min
for (mines_created = 0; mines_created < mines_count; mines_created += 1)
{
    // počítám, že v roomu není jiného objektu než min. Objekt kontroler z náhodného výběru vyřazuji > -1
    object = instance_id[ceil(random(instance_count - 1))];

    if (object.mine == true)
        mines_created -= 1;

    object.mine = true;
}

V objektu obj_button je proměnná mine = false;

Pokračování > Práce s myší


 

  Aktivity (1)

Článek pro vás napsal David Jančík [sczdavos]
Avatar
Autor je vášnivý programátor v .NET C# a PHP. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 



 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!