imagion
но только код не работает
Выложи полный код, который запускаешь. У меня запускается всё.
imagion
можешь объяснить что такое “f_search_hole” , я так понимаю это флаг, но как он работает, в том смысле , что у него внутри.
Флаг переводится как “искать дыру”. Если полностью его писать, то будет flag_search_for_the_hole , но лишние слова убираем и слово flag сокращаем, делая из него префикс.
Пока дано указание искать дыру (значение флага выставлено в истину), остальной код, проверяя этот флаг, ищет дыру. Когда дано указание не искать дыру (значение флага выставлено в ложь), остальной код, проверяя этот флаг, не ищет дыру.
Таким образом, цикл всё время крутится (спускается от уровня к уровню), пока флаг сообщает, что надо продолжать искать дыру. Как только входишь в цикл, флаг сразу выключается. Если дыра будет найдена, то шарик перейдёт на новый уровень и надо будет снова искать дыру на этом новом уровне, поэтому флаг опять включится. А если дыра не будет найдена, флаг так и останется выключенным, потому что дыра не будет найдена только на последнем уровне.
Флаг этот можно и по-другому назвать. Типа f_seen_last_level - “видел последний уровень”.
Тогда код поменяется с истины на ложь и со лжи на истину
флаг_видел_последний_уровень := нет
цикл пока не флаг_видел_последний_уровень выполнять
флаг_видел_последний_уровень := да
цикл пока справа_нет_стены выполнять
шагнуть вправо
цикл пока снизу_нет_стены выполнять
шагнуть вниз
флаг_видел_последний_уровень := нет
конец цикла
конец цикла
цикл пока слева_нет_стены выполнять
шагнуть влево
цикл пока снизу_нет_стены выполнять
шагнуть вниз
флаг_видел_последний_уровень := нет
конец цикла
конец цикла
конец цикла
def task_8_30():
f_seen_last_level = False
while not f_seen_last_level:
f_seen_last_level = True
while not wall_is_on_the_right():
move_right()
while not wall_is_beneath():
move_down()
f_seen_last_level = False
while not wall_is_on_the_left():
move_left()
while not wall_is_beneath():
move_down()
f_seen_last_level = False
Но видишь, когда флаг сделан в форме “искать дыру”, код менее запутан отрицаниями всякими и выглядит чётче и определённее. Сразу понятно, что нужно делать и чего не нужно делать.