так больше вероятность, что не зависнет в цикле WHILE($stlb = 1)
это я просто наугад решил так..... но попытка не пытка
оба эти скрипта уже не зависают, но так как я обьяснил задачу невнятно работают они не совсем по той схеме что нужна.
если сможешь объясни мне следующий поворот программы
( , я как неграмотный юзверь выскакивал по гото минуя конец цыкла и мои значения $j=$j-1 не просто не наращивались а уменьшались почему я и ввел условие IF($j!0) что бы в минус не уйти) ты $j=$j-1 а потом давал пройти ей дальше по циклу WHILE($stlb = 1) Она у тебя в итоге уменьшалась на 1 или ты уменьшил, цикл увеличил, а итого не изменилось?
1 вариант скрипта: строка №28-№33 выгледит все логично но если я правильно понял глюк $j = 99999 а потом оно всетаки проходит через конец цыкла и становиться 100000 и ломает цикл WHILE($j = 99999) и FOR ($i=0, $i<$B) прокручивается до конца в бездействии, менял в твоей программе 99998 стала работать лучше. ближе к результату ( жаль что слишком рано слил все попытки теста а ждать еще час немного лень) свой писал уже не прокатило, в этом моменте я тоже запутался
в обоих циклах условие IF($j!0) и вся последующая проверка $j-1 зависит от IF($i!0) в первом все кроме первой строки срабатывает во втором наоборот только первая( если я правильно ифы распусал)
во втором еще какой то глюк был с прирыванием преждевременным, может тот же самый что в первом, но поймал я его только раз ( и анализировать доконца не смог)
зато понял две вещи на твоих примерах, вопервых твой принцип использования WHILE (интересно и позновательно, много новых идей) второе объяснять надо проще доходчевей и наглядно, а то я помоему с идеей сам перемудрил
итог №1 случайно вышел код, работает не совсем по плану но не плохо
FOR ($i=0, $i<$B) //перебираю строки
print ("строка",$i)
FOR ($j=0, $j<$D) //перебераю столбцы
print ("столбец",$j)
migk($i,$j) //процедура в отдельном файле проверяет есть мигающий пиксель в центре квадрата или нет($m=1:есть $m=0:нет)
IF ($m=1)
WAITMS(50)
print ("кликаю")
LCLICK($xkz+$dlk*$j,$ykz-$dlk*$i)//открываю клетку если пиксель мигает
WAITMS(50)
IF($i!0)
migk($i-1,$j)//если строка не нижняя проверяю с низу квадратик не начал мигать?
IF ($m=1)
$i=$i-1//если начал то счетчик откатываю на 1
$j=$j-1//сдесь я уменьшаю цикл дальше увеличит на 1 в итоге не измениться
END_IF
END_IF
IF($j!0)
migk($i,$j-1)//если строка не крайняя проверяю с слева квадратик не начал мигать?
IF ($m=1)
$j=$j-2//если начал то счетчик откатываю на 1
END_IF
END_IF
END_IF
END_CYC
END_CYC
итог №2 вроде то что надо
FOR ($i=0, $i<$B) //перебираю строки
print ("строка",$i)
FOR ($j=0, $j<$D) //перебераю столбцы
//метка, куда возвращаюсь если откатываю счетчик назад по строке
print ("столбец",$j)
migk($i,$j) //процедура в отдельном файле проверяет есть мигающий пиксель в центре квадрата или нет($m=1:есть $m=0:нет)
IF ($m=1)
WAITMS(50)
print ("кликаю")
LCLICK($xkz+$dlk*$j,$ykz-$dlk*$i)//открываю клетку если пиксель мигает
WAITMS(50)
IF($i!0)
migk($i-1,$j)//если строка не нижняя проверяю с низу квадратик не начал мигать?
IF ($m=1)
$i=$i-2//если начал то счетчик откатываю на 1
$j=$D
END_IF
END_IF
IF($j!0)
migk($i,$j-1)//если строка не крайняя проверяю слева квадратик не начал мигать?
IF ($m=1)
$j=$j-2//если начал то счетчик откатываю на 1
END_IF
END_IF
END_IF
END_CYC
END_CYC
итог №3 это на основе твоих кодов, твоей идеи. протестил еще не чательно но вроде работает
$j=99999
FOR ($i=0, $i<$B) //перебираю строки
print ("строка",$i)
IF($j=$D)
$j=99999
END_IF
WHILE($j = 99999)
$j=0
FOR ($j=0, $j<$D) //перебераю столбцы
$stlb = 1
WHILE($stlb = 1)
$stlb = 0
print ("столбец",$j)
migk($i,$j) //процедура в отдельном файле проверяет есть мигающий пиксель в центре квадрата или нет($m=1:есть $m=0:нет)
IF ($m=1)
WAITMS(50)
print ("кликаю")
LCLICK($xkz+$dlk*$j,$ykz-$dlk*$i)//открываю клетку если пиксель мигает
WAITMS(50)
//и тут снова проверка на банки склянки
IF($i!0)
migk($i-1,$j)//если строка не нижняя проверяю с низу квадратик не начал мигать?
IF ($m=1)
$i=$i-1//если начал то счетчик откатываю на 1
$j = 9999
$stlb = 0
END_IF
END_IF
IF($j!0)& ($j!9999)
migk($i,$j-1)//если строка не нижняя проверяю с низу квадратик не начал мигать?
IF ($m=1)
$j=$j-1//если начал то счетчик откатываю на 1
$stlb = 1
END_IF
END_IF
END_IF
END_CYC
END_CYC
END_CYC
END_CYC
P.S. дальше я 3 измерение буду добавлять дальше еще веселее станет. буду выбирать один из трех способов прохождения
и что бы внести наконец ясность алгоритм делаю прохождения вот этой игрушки игровой локации
https://vk.com/app5683079_60421822