Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2011, 13:34   #11
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Попробую дать свои предложения и замечания.

Код:
uses crt,graph;
   procedure BindB(x,y:integer);
{Рисование прямоугольника со случайными координатами}
{Зачем параметры? Если прямоугольники просто рисуются,
то параметры ни к чему, если перерисовываются, то параметры
должны возвращаться, например, для процедуры стирания
т.е. var x,y:integer. Возможно, что это глобальные переменные
и их следует инициировать в теле основной программы}
     begin
        {delay(65535);}
        randomize; {Генератор уже инициирован в начале программы}
{Возможно, что тут должны быть установлены параметры для цвета
линии и заливки, если да, то их тоже следует включить в вызове}
        x:=random(350);
        y:=random(200);
        Rectangle(x,y,x+20,y+20);
     end;
procedure ClrB(x,y:integer);
{Процедура перерисовки прямоугольника цветом фона}
end;

   procedure SetCircle(x,y:integer);
{Процедура рисования окружности}
end;

   procedure ClrCircle(x,y:integer);
{Процедура стирания окружности цветом фона}
end;

   var x,y,d,g,r,color,x1,y1:integer;
     c:char;
   begin
     d:=detect;
     initgraph(d,g,'');
     randomize;
        x:=random(450);
        y:=random(300);
        r:=30;
{Рисуем окружность первый раз}
     SetCircle(x,y,r);
     ClrCircle(x,y,r);         {вместо clrscr;}
{ClearDevice - очистка графического окна
          ClrScr - очистка текстового окна}
     SetCircle(x,y,r);       {не ясен смысл, но надо, пусть будет}
   repeat
           {Прежде чем читать код с клавиатуры, следует проверить, а нажата ли клавиша?}
    If KeyPressed then begin
{далее проверяем код и перемещаем окружность}
           c:=readkey;
             case c of
              #72: begin {ClrCircle}; y:=y-5; {SetCircle} end; {Пример}
              #77: x:=x+5;
              #80: y:=y+5;
              #75: x:=x-5;
              #13: Break; {Завершение программы}
           end;
    end {if}
{Независимо от того, рисовали ли мы окружность или нет, нарисуем /перерисуем квадрат}
           {clrscr;}
           {circle(x,y,r);}
           BindB(x1,y1);
        delay(65535); {Это плохой вариант, т.к. процедура тормозит работу всей программы.
Возможно, что лучшим решением будет счётчик или чтение системного времени и проверка на истечение интервала}
           inc(M); {увеличим счетчик}
           If M >= 65535 then begin {сотрём квадрат}
              ClrB(x1,y1);
               M := 0;
           end;
until false; {Бесконечный цикл}
      closegraph;
   end.
Как то так, думаю
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 28.07.2011, 21:19   #12
What's_That?
Пользователь
 
Регистрация: 19.07.2011
Сообщений: 12
По умолчанию

Спасибо огромное,сейчас буду курить код и досконально,от и до,разбирать))
What's_That? вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение линии по окружности ironbeef Общие вопросы Delphi 3 03.05.2011 15:16
движение окружности по окружности MyQwErTy Помощь студентам 13 04.11.2008 22:52
Движение окружности Ensoph Помощь студентам 4 25.09.2008 12:11
Движение окружности и отрезка. Ev@ngel Компоненты Delphi 0 18.04.2008 22:16
Движение по окружности Mickle Общие вопросы Delphi 3 13.04.2007 16:24