|
0 / 0 / 0
Регистрация: 14.08.2020
Сообщений: 6
|
||||||||||||||||
Генерация точек и пути между ними14.08.2020, 15:14. Показов 4937. Ответов 13
Доброго времени суток.
Стоит задача: Сгенерировать игровое поле 4Х4. На данном поле случайно задать две точки на расстоянии минимум две клетки друг от друга. Между точками должна быть возможность проложить путь без диагоналей (пример: на рисунке весь путь включая точки выделил желтым). За пределами пути в других клетках необходимо случайно генерировать бомбы. С генерацией поля я справился:
0
|
||||||||||||||||
| 14.08.2020, 15:14 | |
|
Ответы с готовыми решениями:
13
В множестве точек на плоскости найти пару точек с максимальным расстоянием между ними
Среди множества точек на плоскости найдите пару точек с минимальным расстоянием между ними |
|
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,214
|
||||||
| 14.08.2020, 15:54 | ||||||
Сообщение было отмечено NeonWeber как решение
Решение
NeonWeber,
1
|
||||||
|
0 / 0 / 0
Регистрация: 14.08.2020
Сообщений: 6
|
|
| 14.08.2020, 17:06 [ТС] | |
|
Не совсем понял, где необходимо присваивать элементам массива значение 3 (это клетки пути).
0
|
|
|
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,214
|
|||
| 14.08.2020, 18:39 | |||
true если рандомная генерация 2-ой точки была сделана верно.
1
|
|||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
||||||
| 14.08.2020, 23:01 | ||||||
Сообщение было отмечено NeonWeber как решение
Решение
Так, если сильно не заморачиваться. Можно выбрать произвольный размер поля, количество бомб, минимально допустимый полученный путь.
2
|
||||||
|
0 / 0 / 0
Регистрация: 14.08.2020
Сообщений: 6
|
|
| 19.08.2020, 12:32 [ТС] | |
|
Enifan, 1-ый попавшийся или случайный путь был бы более подходящим.
Добавлено через 16 минут Enifan, то есть на текущий момент я получаю вот такого вида массивы: 0020 0200 0000 0000 0200 0000 0000 0002 Как сделать так, чтобы построить случайный путь между точками со значением 2? т.е., например (значение 3 - это путь): 0023 0200 0003 0330 0233 0030 0000 0032
0
|
|
|
0 / 0 / 0
Регистрация: 14.08.2020
Сообщений: 6
|
|||||||||||
| 20.08.2020, 14:43 [ТС] | |||||||||||
|
Нашел решение - рандромно двигаться по доступным соседям клетки.
Соседей инициализируем так:
0
|
|||||||||||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 20.08.2020, 15:21 | |
|
NeonWeber, чем вам мой вариант не нравится? Там уже все решено.
0
|
|
|
1524 / 515 / 126
Регистрация: 09.01.2018
Сообщений: 1,620
|
|||||||
| 20.08.2020, 15:39 | |||||||
|
Вы проверяете посещенные точки, это хорошо, чтобы не создавать пересекающихся путей. Тем не менее, вы можете никогда не достигнуть конечной точки. Например, у вас такой путь (посещенные отмечены "-", начальная точка - s, конечная точка - x):
Как видите, не все так просто.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 14.08.2020
Сообщений: 6
|
|
| 20.08.2020, 15:48 [ТС] | |
|
escoult, Когда окажемся по соседству с финишной клеткой, строить путь уже нет необходимости. Он выстроен. Ну по крайней мере в моей задаче.
Добавлено через 2 минуты QuakerRUS, решение хорошее, просто не совсем мне подошло.
0
|
|
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 20.08.2020, 16:12 | |
|
0
|
|
|
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,214
|
||||||||||||||||||
| 20.08.2020, 16:38 | ||||||||||||||||||
|
1) создается список, который будет записывать путь 2) рандомно выбирается путь от 1-ой точки или последнего значения списка (при 1-ом ходе от точки, далее от списка) 3) проверяется граница массива, если выход за пределы - возвращаемся к пункту 2 4) проверяем, чтобы найденный путь не совпадал с 1-ой точкой и значениями списка 5) если проблем нет - записываем новое значение в список 6) дошли до 2-ой точки - по значениям из списка заполняем массив Проблема когда придется начинать алгоритм сначала: может получить так, что до 2-ой точки мы не дошли, а ходить нам некуда (либо границы массива, либо попадаем на 1-ую точку, либо на значения из списка)
1 и 2 - точки- - пустые значенияx - сгенерированные значенияПорядок генерации значений: x x x: красный, зеленый, оранжевый По данному алгоритму можно войти в бесконечный цикл, и чтобы этого избежать, модифицирует код: перед генерацией пункта 2 должны быть 4 пустые значения (вверх, право, вниз, влево) - при неудачной попытке в любом направлении заполняется одно из этих направлений. Если все направления заполнены - ходить некуда - возвращаемся к пункту 1
0
|
||||||||||||||||||
|
1524 / 515 / 126
Регистрация: 09.01.2018
Сообщений: 1,620
|
|||
| 20.08.2020, 19:51 | |||
|
По идее надо составлять граф и пересчитывать все вершины перед каждым новым ходом, чтобы знать "попадаем ли мы в конечную вершину, если сделаем ход А". Тоже много возни для задачи на 16 клеток. Я бы использовал самый простой вариант - сгенерировать любой рандомный путь без учета посещенных клеток, а пересечения затем удалить.
1
|
|||
|
0 / 0 / 0
Регистрация: 14.08.2020
Сообщений: 6
|
|
| 27.08.2020, 11:37 [ТС] | |
|
QuakerRUS, Ваш вариант в итоге подошёл идеально! Спасибо!
0
|
|
| 27.08.2020, 11:37 | |
|
Помогаю со студенческими работами здесь
14
Структура, координаты точек, расстояние между ними. Найти пару точек с максимальным расстоянием между ними
Найти пару точек с максимальным расстоянием между ними Координаты белых и черных точек.Разделяющая прямая между ними Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|