Я пытаюсь сделать игру в стиле Flood-It, и у меня возникают проблемы с основным алгоритмом.
Алгоритм проверяет каждый квадрат, которым вы уже управляете, и находит смежные квадраты, имеющие выбранный цвет, который вы не контролируете.
Переменные:
1 - $ board: двумерный массив, содержащий состояние доски
- Квадраты, которыми вы управляете в массиве: = 0
- Квадраты, которыми вы не управляете, варьируются от 1 до 6 и представляют разные цвета.
2 - $ color: цвет, выбранный пользователем
3 - $ size: размер квадрата игрового поля
4 - $ rkey / $ ckey: строка и столбец в двумерном массиве
Основная проблема заключается в том, что он работает для первых нескольких квадратов в начальном углу, может быть, 2 или 3, а затем перестает захватывать новые квадраты.
Вот пример игры, которую я пытаюсь сделать: http://floodit.appspot.com/
function checkRecursive($rkey, $ckey)
{
global $board, $size, $color;
if ($board[$rkey][$ckey] == 0)
{
if ($rkey < $size-1 && $board[$rkey + 1][$ckey] == $color)
{
$board[$rkey + 1][$ckey] = 0;
checkRecursive($rkey + 1, $ckey);
}
if ($ckey < $size-1 && $board[$rkey][$ckey + 1] == $color)
{
$board[$rkey][$ckey + 1] = 0;
checkRecursive($rkey, $ckey + 1);
}
if ($rkey > 0 && $board[$rkey - 1][$ckey] == $color)
{
$board[$rkey - 1][$ckey] = 0;
checkRecursive($rkey - 1, $ckey);
}
if ($ckey > 0 && $board[$rkey][$ckey - 1] == $color)
{
$board[$rkey][$ckey - 1] = 0;
checkRecursive($rkey, $ckey - 1);
}
}
}