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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движение графического объекта 
:(
    Опции темы
Alexey91
Дата 25.12.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть объект, движение производится по диагоналям экрана. 
Переход с одной диагонали на другую производится в центре экрана.

Насколько я понял, центр экрана переход на диагональ выбирает случайно
PM   Вверх
hot_man
Дата 25.12.2008, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 5.12.2007
Где: Россия, Тольятти

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



так в чем проблема???
PM MAIL ICQ   Вверх
Alexey91
Дата 25.12.2008, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я не могу сделать так, чтобы он двигался, именно таким образом.
PM   Вверх
volvo877
Дата 26.12.2008, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



В чем проблема сделать это? Вот тебе пример, можно его сократить в 2 раза, если чуть-чуть подумать, но я оставил как есть, чтобы понятен был алгоритм:

Код

uses graph, crt;

const
  deltax = 4;
  deltay = 3;
  direction: array[1 .. 4] of record
    x, y: integer;
  end =
  (
    (X: 1; Y: 1),
    (X: 1; Y:-1),
    (X:-1; Y:-1),
    (X:-1; Y: 1)
  );

var
  gd, gm: integer;
  px, py, dx, dy: integer;
  dir: integer;

begin
  initgraph(gd, gm, '');
  { <--- Сюда добавить проверку инициализации графики }

  randomize;
  px := getmaxx div 2; py := getmaxy div 2;
  repeat
    dir := random(4) + 1;
    dx := direction[dir].x;
    dy := direction[dir].y;

    while (px > 0) and (px < getmaxx) and (py > 0) and (py < getmaxy) do begin
      setcolor(white);
      circle(px, py, 10); { <--- Задержку установи какую надо }
      delay(10);
      cleardevice;

      inc(px, dx * deltax);
      inc(py, dy * deltay);
    end;

    dx := - dx;
    dy := - dy;

    while (px <> getmaxx div 2) and (py <> getmaxy div 2) do begin
      setcolor(white);
      circle(px, py, 10);
      delay(10); { <--- Задержку установи какую надо }
      cleardevice;

      inc(px, dx * deltax);
      inc(py, dy * deltay);
    end;

  until keypressed;

  closegraph;
end.

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

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

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

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

3. Оффтопить

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

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

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


 




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


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

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