IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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ší


 

Článek pro vás napsal David Jančík
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
Autor je vášnivý programátor. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.
Aktivity