Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движение точки в пределах экрана 
V
    Опции темы
ausar
Дата 3.12.2008, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 3.8.2007

Репутация: нет
Всего: нет




Привет всем!
Пытаюсь сделать движение графического объекта в графическом режиме на плоскости по произвольной траектории. Начальные координаты фигуры также задаются генератором. Получилось вот так.

Код

var x,y:integer;
begin
x:=random(640);
y:=random(480);
PutPixel(x,y,white)
repeat
x:=x+random(1+1)-2*1;
y:=y+random(1+1)-2*1;
until keypressed;
End.


Проблема в том что точка не должна выходить за приделы графического экрана т.е она должна перемещаться до границы а потом менять свою траекторию. Я не имею ввиду отталкиваться с соблюдением законов физики, учетом угла соприкосновения, просто чтоб она всегда была в пределах экрана. У меня получилось так что после запуска точка хоть и по кривой траектории движется к левому верхнему углу.
PM MAIL   Вверх
volvo877
Дата 3.12.2008, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(ausar @  3.12.2008,  04:40 Найти цитируемый пост)
У меня получилось так что после запуска точка хоть и по кривой траектории движется к левому верхнему углу. 

Сделай так:
Код
uses graph, crt;
var
  gd, gm: integer;
  X, Y, dx, dy: integer;
begin
  initgraph(gd, gm, '');
  { ... }
  x := random(getmaxx);
  y := random(getmaxy);
  repeat
    putpixel(X, Y, white);
    repeat
      dx := random(3) - 1;
    until (X + dx > 0) and (X + dx < getmaxx);

    repeat
      dy := random(3) - 1;
    until (Y + dy > 0) and (Y + dy < getmaxy);

    X := X + dx;
    Y := Y + dy;
  until keypressed;
  closegraph;

end.
, тогда точка будет болтаться по экрану, не выходя за его пределы...
PM MAIL   Вверх
ausar
Дата 3.12.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 3.8.2007

Репутация: нет
Всего: нет



Во вот так гораздо ближе! volvo877 большое спасибо! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0622 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.