IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Наложение фигур
ТОХА
сообщение 28.03.2011 15:38
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской
Реальное имя: Антон

Репутация: -  1  +


Здравствуйте!
при написании одного из модулей программы я столкнулся с такой проблемой как наложение фигур друг на друга. Как сделать так чтоб последующая фигура рисовалась на свободном месте экрана и не накладывалась на другие?
 uses Crt, Graph;
const k=100;
var
GraphDriver, GraphMode: Integer;
X1,y1, r: Integer;ch:char;
begin
GraphDriver := Detect;
InitGraph(GraphDriver, GraphMode, ' ');
if GraphResult<> grOk then
Halt(1);
repeat
ch:=readkey;
if ch=chr(13) then begin
X1 := Random(640-k)+k;
y1 := Random(480-k)+k;
r:=Random(k)+1;
circle(X1,y1,r);
end;
until ch=chr(27);
CloseGraph;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
TarasBer
сообщение 29.03.2011 15:03
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Это твои заморочки. Оно ОБЯЗАНО отработать по изложенным выше причинам.

Причины недостаточно доказаны.

> А отработает оно за 0.0002 сек. или за 0.05 сек - это дело десятое (в данном конкретном случае)

Лишь бы раз в год оно не заработало за 50 сек.

> Проверил на своей машине: сгенерировал (без вывода на экран) 50 окружностей, в цикле. Цикл прогнал 10000 раз. А потом - полтора миллиарда раз. И в первом и во втором случае среднее время генерации всех 50 окружностей приблизительно одно и то же.

Возьми не среднее, а максимальное. А потом возьми другой ГСЧ, для него придётся доказывать всё по новой.

Это хорошо, что полтора миллиарда испытаний отработали как надо, но всё-таки само понятие случайного числа противоречит понятию алгоритма, и завязывание жизненно важных участков алгоритма на случайные числа лишает алгоритм права называться алгоритмом, поскольку делает его поведение непредсказуемым.
Ты математически можешь доказать, что алгоритм гарантировано даст нужный результат не более, чем за эн тактов процессора (или итераций цикла, или ещё каких-то условных единиц)? Нет, не можешь. Поэтому с такими алгоритмами надо быть очень осторожными. И если есть обходные пути, работающие за разумное время - то надо их искать. Иначе на этом алгоритме надо огромными красными буквами писать, что так как он основан на случайных событиях, то он ничего не гарантирует.

Добавлено через 2 мин.
> как пользоваться коммандой MouseIn для кругов и эллипсов?

Чтобы узнать, что точка с координитами mx, my попала в эллипс с центром в точке x, y и полуосями rx, ry, надо сравнить

sqr((mx-x)/rx) + sqr((my-y)/ry)

с единицей.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
ТОХА   Наложение фигур   28.03.2011 15:38
мисс_граффити   фигуры - только круги? а что делать, если свободны...   28.03.2011 16:57
ТОХА   да, только круги это просто часть моей игры на зап...   28.03.2011 17:01
volvo   Если только круги - то можно сделать uses Crt, ...   28.03.2011 22:39
ТОХА   uses (sqr(C[i].X - X1) + sqr(C[i].Y - ...   28.03.2011 22:55
volvo   Чего ж тут такого особенного? Чистая логика. Когда...   29.03.2011 0:44
ТОХА   точно это ж геометрия за 8 класс :)   29.03.2011 0:49
TarasBer   > repeat random... until ok; Предлагаю п...   29.03.2011 9:13
volvo   Не проблема. Только не надо мне рассказывать ,что ...   29.03.2011 9:52
TarasBer   > Random - это генератор, который возвращает ра...   29.03.2011 10:05
ТОХА   смысл игры в том, что нужно запомнить какой шарик ...   29.03.2011 11:31
TarasBer   > TarasBer, надеюсь я ответил на твой вопрос Н...   29.03.2011 12:16
volvo   Это твои заморочки. Оно ОБЯЗАНО отработать по изло...   29.03.2011 14:40
ТОХА   небольшой оффтоп как пользоваться коммандой MouseI...   29.03.2011 14:51
TarasBer   > Это твои заморочки. Оно ОБЯЗАНО отработать по...   29.03.2011 15:03
ТОХА   Спасибо )   29.03.2011 15:15
ТОХА   немного запутался и возникло 2 проблемы: мышь полз...   29.03.2011 17:48
volvo   Максимальное время различается не больше, чем на 2...   29.03.2011 19:06
ТОХА   нашел, исправил, а что делать с мышкой?   29.03.2011 21:07
TarasBer   > Максимальное время различается не больше, чем...   30.03.2011 9:30
ТОХА   мышку одолел, вопрос покажется странным но как с...   31.03.2011 22:52
volvo   Вообще самым оптимальным было бы использовать граф...   1.04.2011 17:20
ТОХА   а с помощью комманд getimage и putimage можно сдел...   1.04.2011 18:39
volvo   А ты знаешь, мне тут еще один финт в голову пришел...   1.04.2011 19:08
ТОХА   работает, правда белый цвет поменялся на голубой, ...   1.04.2011 19:17
volvo   Ты б прикрепил весь файл полностью (можно в приват...   1.04.2011 20:01
ТОХА   ок в приват скину, а то при защите найдут проект м...   1.04.2011 20:05
volvo   Что-то я не понял, чего ты творишь... Вот тут: все...   1.04.2011 20:55
ТОХА   модуль мыши просто из FAQ брал, как я и предполог...   1.04.2011 21:02
ТОХА   ошибка в buttonpress это 100%, изменил условие нач...   1.04.2011 21:46
volvo   Так... Нашел DosBox с шестым Турбо-Паскалем... Вот...   1.04.2011 21:50
ТОХА   Эврика :) все работает, буду до конца вечера тести...   1.04.2011 22:15
andriano   Действительно, стоит изменить лишь одну константу...   2.04.2011 14:18
volvo   А ты не меняй, и алгоритм бесконечным не будет. Ес...   2.04.2011 14:46
ТОХА   защитил проект сегодня удачно :) всем спасибо за п...   2.04.2011 16:31
Lapp   кому интересно что получилось прикладываю проект, ...   3.04.2011 2:09
ТОХА   я не студент :) учусь в 10 классе)   3.04.2011 12:51


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 3.06.2024 5:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"