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;