msdn11
Новичок
php && рекурсия
пытаюсь написать на пхп игрушку "сапёр" для вапа. аналог стандартной виндошной...
застрял на функции которая в случае попадания игрока на пустую ячейку(без цифры и бомбы) должна "очищать" ячейки, которые тоже пустые, и касаются той в которую выстрелил юзверь. понятно что без рекурсии тут никуда.
мои попытки выглядят так:
прошу помощи, от тех у кого лучше с рекурсией 
пытаюсь написать на пхп игрушку "сапёр" для вапа. аналог стандартной виндошной...
застрял на функции которая в случае попадания игрока на пустую ячейку(без цифры и бомбы) должна "очищать" ячейки, которые тоже пустые, и касаются той в которую выстрелил юзверь. понятно что без рекурсии тут никуда.
мои попытки выглядят так:
PHP:
// это функция которая должна "очищать", но...
// $field [$x][$y]- массив с ячейками поля
// $show[$x][$y] - массив 0 и 1, показывающий можно ли показывать ячейку
// $check[$x][$y] - массив 0 и 1, показывающий проверялась ячейка или нет(что бы рек-ная функция не ушла в бесконечность)
function magic($field,$show,$x,$y,$check){
$show[$x][$y] = 1;
if ( touchcount($field,$x,$y) == 0 and !$ckeck[$x][$y] and $x > 0 and $x < 11 and $y > 0 and $y < 11 ){
for( $i = -1; $i < 2; $i++ ){
for( $j = -1; $j < 2; $j++ ){
if( $i <> 1 and $j <> 1 and $x+$i > 0 and $x+$i < 11 and $y+$j > 0 and $y+$j < 11 ){
$check[$x+$i][$y+$j] = 1;
$show = magic($field,$show,$x+$i,$y+$j,$check);
}
}
}
}
return $show;
}
// ф-ция проверки и вычисления числа в ячейке
function touchcount($a, $x, $y){
$k = 0;
if($a[$x-1][$y-1] == 2)$k++;
if($a[$x][$y-1] == 2)$k++;
if($a[$x+1][$y-1] == 2)$k++;
if($a[$x-1][$y] == 2)$k++;
if($a[$x+1][$y] == 2)$k++;
if($a[$x-1][$y+1] == 2)$k++;
if($a[$x][$y+1] == 2)$k++;
if($a[$x+1][$y+1] == 2)$k++;
return $k;
}
