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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движение прямоугольника, по диагонали 
:(
    Опции темы
Андрей1
Дата 22.8.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Это программа выдвет движение по вертикали, надо ее переделать.
Код

program pr;

Uses Graph, CRT;    {используется graph  и CRT}

Const N=50;          {Константа n=50}

Var Driver, Mode: Integer;           {Присваивание форматов значений}
    x1, y1, x2, y2, dy: Integer;
    ch: Char;

begin
  Driver:=Detect; dy:=1;
  InitGraph(Driver, Mode, 'C:\PABCWork\SAMPLES');   {Включить графический режим , дравер в текужщем каталоге}
  x1:=GetMaxX div 2-50;
  x2:=GetMaxX div 2+50;
  y1:=1;  y2:=N;
  Repeat
    Rectangle (x1, y1, x2, y2);   {строит контур прямоугольника}
    y1:=y1+dy;  y2:=y2+dy;
    Delay(1000);    {повтор}
    if (y2=475) then dy:=-1;
    if (y1=1) then dy:=1;
    ClearDevice; {очищает графический экран}
    if KeyPressed then ch:=ReadKey;
  Until ch=#27; {прерывание цикла}
  CloseGraph;   {закрытие  модуля GRAPH}
end.

PM MAIL   Вверх
volvo877
Дата 22.8.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну, добавь контроль за X-составляющей тоже:
Код
program pr;
Uses
  Graph, CRT;
Const
  N=50;
Var Driver, Mode: Integer;
    x1, y1, x2, y2,
    dx, dy: Integer;
    ch: Char;
begin
  Driver:=Detect;
  dx:=1;  { <-- Добавлено }
  dy:=1;
  InitGraph(Driver, Mode, 'C:\PABCWork\SAMPLES');
  x1:=GetMaxX div 2-50;
  x2:=GetMaxX div 2+50;
  y1:=1;  y2:=N;
  Repeat
    Rectangle (x1, y1, x2, y2);
    y1:=y1+dy;  y2:=y2+dy;
    x1:=x1+dx;  x2:=x2+dx; { <-- Добавлено }
    Delay(1000); 

    if (y2=475) then dy:=-1;
    if (y1=1) then dy:=1;

    if (x2=(getmaxx-1)) then dx := -1;  { <-- Добавлено }
    if (x1=1) then dx := 1;

    ClearDevice;
    if KeyPressed then ch:=ReadKey;
  Until ch=#27;
  CloseGraph;
end.

Это - если дополнить твою программу. По хорошему же ее надо переделать, ибо мерцает  smile 

Это сообщение отредактировал(а) volvo877 - 22.8.2006, 15:59
PM MAIL   Вверх
svarogik
Дата 1.9.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



рисуй в том месте откуда сдвинулся прямоугольник, прямую черного цвета, у тебя ведь движение по 1 происходит, и особо не юзай клиардивайс, его надо использовать только в самом начале проги, делай тоже не юзай, на разных компах задержка разная, у меня делай 60К длится несколько десятых секунды используй отдел памяти, есть такая переменная которая прибавляет 1 каждые 18.5 секунды. А мысли сделать чтоб прямоугольник двигался туда какую кнопку нажал, у тебя не было? по моему так интереснее, это была моя первая программа с использованием элемента графики, 
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.1226 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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