Раскидать тайлы в рандомном порядке, но так, чтоб позиция XY в цикле ни разу не повторялась. - C (СИ)
Формулировка задачи:
Задача такова : нужно раскидать тайлы в рандомном порядке, но так, чтоб позиция XY в цикле ни разу не повторялась.
Начал было писать программу...
Но тут надо всё-таки do while \ break использовать.
Я очень слаб в этом. Набросайте, пожалуйста, как корректнее будет.
Листинг программы
- u16 rx= random()%20*2;
- u16 ry= random()%14*2;
- u16 i;
- u16 j;
- for(i=0;i<10;i++)
- {
- for(j=0;j<7;j++)
- {
- if(placed[i][j]==1)
- }
- }
Решение задачи: «Раскидать тайлы в рандомном порядке, но так, чтоб позиция XY в цикле ни разу не повторялась.»
textual
Листинг программы
- u16 rx, ry;
- do
- {
- rx= random()%20*2;
- ry= random()%14*2;
- }
- while (placed[rx][ry]);
- placed[rx][ry] = true;
Объяснение кода листинга программы
- Объявляются две переменные типа u16 - rx и ry, которые будут использоваться для хранения координат XY.
- Запускается цикл do-while, который будет выполняться до тех пор, пока переменная placed[rx][ry] не станет равной true.
- Внутри цикла выбираются случайные значения для переменных rx и ry с помощью функции random()%202 и random()%142 соответственно.
- Функция random() генерирует случайное число в диапазоне от 0 до 1 (включительно), а оператор % (остаток от деления) используется для ограничения диапазона значений до 20 и 14 соответственно. Умножение на 2 необходимо для получения значений в диапазоне от 0 до 40 и от 0 до 28 соответственно.
- Если выбранные координаты уже заняты (переменная placed[rx][ry] равна true), то цикл продолжается, иначе цикл завершается и переменная placed[rx][ry] устанавливается в true, что означает, что координаты заняты.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д