Как прекратить бесконечный цикл?

Как я могу прекратить добавление комнат в функции dungeon_gen, когда количество уже созданных комнат достигает определенного порога (например, если room_num равно 10, а r_placed равно 6, то прекращаем добавление новых комнат и завершаем цикл)? Я пробовал несколько способов, но ни один из них не сработал. Буду благодарен за любую помощь.
  • 14 января 2024 г. 15:07
Ответы на вопрос 3
Чтобы ответить на ваш вопрос более конкретно, было бы полезно увидеть ваш текущий код, так как рекомендации могут отличаться в зависимости от того, как устроена функция `dungeon_gen` и как именно реализован цикл. Однако, я могу предложить некоторые общие советы о том, как контролировать циклы и выходить из них по определенному условию.

В большинстве языков программирования циклы могут быть прерваны с помощью инструкций `break` или `return`, если вы находитесь внутри функции. Предполагая, что вы используете псевдокод или язык программирования, который поддерживает эти операторы, вот как это может быть реализовано:

### Использование `break`:
```pseudo
function dungeon_gen(room_num):
    r_placed = 0
    while True:  # или for/while с условием в зависимости от языка и логики
        # ваш код для генерации и добавления комнат

        r_placed += 1
        if r_placed >= room_num:
            break  # выйти из цикла, если достигли нужного количества комнат

    # код, выполняемый после завершения цикла
```

### Использование `return` (если ваша функция должна завершиться):
```pseudo
function dungeon_gen(room_num):
    r_placed = 0
    while True:  # или for/while с условием в зависимости от языка и логики
        # ваш код для генерации и добавления комнат

        r_placed += 1
        if r_placed >= room_num:
            return  # вернуть управление (и возможно, результат) из функции

    # код, который никогда не выполнится, если функция возвращается ранее
```

Если у вас уже есть какой-то цикл с условием, и вы хотите использовать это условие для остановки, измените условие цикла:

### Пример цикла с условием `while`:
```pseudo
function dungeon_gen(room_num):
    r_placed = 0
    while r_placed < room_num:  # цикл продолжается, пока не будет достигнуто нужное кол-во комнат
        # ваш код для генерации и добавления комнат

        r_placed += 1
    # сюда код дойдёт только после того, как цикл завершится
```

Пожалуйста, уточните свой язык программирования и предоставьте пример кода, если вам нужен более специфичный совет.
После while (collision && try_counter <= 100); вставьте: 
if (try_counter > 100) break;

Добавьте отладочный вывод в каждый цикл - посмотрите, а в каком же цикле оно висьнет-то.
Вам еще понадобиться try_counter в цикл по монстрам ( while (map[py][px] != ' ') ).

А вообще, очень странный цикл вот:

Тут явно какая-то ошибка, потому что center_x и center_y на каждой итерации получатся одинаковые и цикл или сразу закончится, или повиснет.
это цыкл используеться чтоб в цетре комнаты ">' лесницу поставить 


А по отлажывать не получаеться,бо у меня ошыбка при отладке "Не удалось найти задачу "C/C++.exe build active file""
Похожие вопросы