|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.04.2016, 15:37 | #1 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
Как сделать так чтобы квадраты не прикосались друг к другу?
Всем доброго времени суток, уважаемые эксперты. Столкнулся с проблемой. Необходимо на поле размера 10х10 создать 7 квадратов случайного размера (1х1, 2х2, 3х3, 4х4). Они могут пересекаться, но не должны становиться стенка к стенке по соседству. Могут входить внутрь друг друга или пересекаться перпендикулярно. Я На картинках ниже покажу. У каждого квадрата на поле есть на одном из углов цифра, она показывает сколько цифр из других квадратов попали внутрь этого квадрата.
Помогите сделать проверку на создание квадрата так, чтобы квадраты не соприкасались бок о бок с другими квадратами. Вот мой код, в котором я запрещаю становиться рядом квадратам. Я просто смотрю чтобы на границе с другим квадратом не проходила граница нового квадрата: Код:
http://rghost.ru/8mhnsyNFl Картинки как правильно создавать квадраты и как неправильно прилагаю: |
06.04.2016, 16:36 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
1) Пролечите свою Дельфи от вируса "Induc".
2) Оставил только такую проверку (UPD НЕВЕРНАЯ): Код:
3) У меня не получилось дождаться, пока сгенерится 7 квадратов с таким условием - пришлось поставить "while k < 4 do". Мне кажется, способ "тупого" рандома тут не очень подходит. Всего разных квадратов с заданными условиями существует 294 (100 единичного размера, 81 - двойного, 64 - тройного, 49 - четверного). Мне кажется, нужно сгенерировать все квадраты, а затем уже из них как-то выбирать семь нужных.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 10.04.2016 в 16:43. |
06.04.2016, 17:53 | #3 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
06.04.2016, 18:40 | #4 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
Не совсем понимаю, честно говоря. Но насколько я понимаю это позволит мне сделать чтобы квадраты вообще не пересекались. А мне нужно чтобы перпендикулярно они могли пересекаться. А вот стенка к стенке - нельзя и угол к углу нельзя чтобы прикасались. Или есть какой-то способ это реализовать через подсчет суммы площадей?
Последний раз редактировалось Armageddets; 06.04.2016 в 19:14. |
10.04.2016, 09:44 | #5 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,814
|
а может просто сначала задать стороны квадратов как массив из точкек (X1,Y1) и потом их сравнивать, чтоб ни у одного квадрата не было точного совпадения более двух точке с другим квадратом (X2, Y2).
если хотя бы 2 соседние точки совпадают, то это означает, что квадраты соприкасаются сторонами. а если только одна точка - это значит соприкасаются углами. если 2 разные не соседние точки - квадраты пересекаются (а это допустимо)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Лесть не приносит профитов, так зачем Вы врете друг другу? | Alar | Свободное общение | 18 | 07.11.2014 11:23 |
Проверить, являются ли данные два слова обращенными друг к другу, то есть первое читается слева направо так же, как второе справа | FYNZIK | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 10.03.2014 18:23 |
Как сделать так, чтоб когда заходит определённый друг в контакт мне приходило смс-уведомление? | romantik2011 | Свободное общение | 7 | 29.07.2011 15:08 |
как сделать так,чтобы он левой рукой до стены коснулся? и если можно чтобы двери лифта закрылись | maxon56 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 07.06.2011 18:46 |
Как сделать так, что б Float-элементы не уезжали друг под друга (если не влазят в экран) | barbiturat | HTML и CSS | 3 | 09.12.2008 10:26 |