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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 18:56   #1
Alina111
Пользователь
 
Регистрация: 20.12.2011
Сообщений: 40
По умолчанию Движение,графика

Помогите,пожалуйста,сделать так,чтобы все круги мишени двигались одновременно сначала вправо(Procedure dvigenie),а потом влево(Procedure dvigenie1),и не оставляли за собой след.

Код:
Program darts;
uses graph,crt;
var d,m:integer;

Procedure podkl;
begin
d:=detect;
InitGraph(d,m,'');
SetBkColor (7);
end;

Procedure krugi;
var i:byte;
begin
for i:=10 downto 1 do
if i=1 then
begin
circle(300,150,10*i);
end
else
circle(300,150,10*i);
end;

Procedure dvigenie;
var
x,y,z,r:integer;
i:byte;
begin
for i:=10 downto 1 do
begin
  x:=300;
  y:=150;
  r:=10*i;
  d:=10;
  m:=100;
  while x<450 do
  begin
  Circle(x,y,r);
  Delay(100);
  x:=x+d;
   end;
   end;
   end;

Procedure dvigenie1;
var
x,y,z,r:integer;
i:byte;
begin
for i:=10 downto 1 do
begin
  x:=450;
  y:=150;
  r:=10*i;
  d:=10;
  m:=100;
  while x>150 do
  begin
  Circle(x,y,r);
  Delay(m);
  x:=x-d;
   end;
   end;
   end;

begin
podkl;
krugi;
readln;
dvigenie;
dvigenie1;
closegraph;
end.

Последний раз редактировалось Alina111; 06.05.2012 в 19:05.
Alina111 вне форума Ответить с цитированием
Старый 06.05.2012, 19:17   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

А обязательно все через процедуры?)

Ну если этот код писали вы, то вам достаточно будет знать что вам надо двигать координату "x" , к примеру

Код:
for x:=200 to 400 do begin
...// влево
end;
for x:=400 downto 200 do begin
...//после отработки первого цикла оно покатит вправо 
end;
А чтоб не было следа используйте ClearDevice;, но сразу говорю, при этом изображение будет мигать. Есть второй вариант, после того как вы передвинули фигуру вы можете подчищать за ней ... но тут надо подумать.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 06.05.2012, 19:29   #3
Alina111
Пользователь
 
Регистрация: 20.12.2011
Сообщений: 40
По умолчанию

Процедуры обязательны,координата "x" у меня меняется в цикле while.
Что нужно добавить,чтобы круги одновременно двигались?и после какой строки нужно вставить ClearDevice;?
Alina111 вне форума Ответить с цитированием
Старый 06.05.2012, 19:41   #4
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Вам надо просто написать общий цикл для двух кругов, не для каждого в отдельности. Я вам ниже привел пример опять же.

Код:
Program darts;
uses graph,crt;
var d,m:integer;

Procedure krugi;
var i:byte;
begin
for i:=10 downto 1 do
if i=1 then
begin
circle(300,150,10*i);
end
else
circle(300,150,10*i);
end;

Procedure dvigenie;
var
x,y,z,r:integer;
i:byte;
begin
for i:=10 downto 1 do
begin
  x:=300;
  y:=150;
  r:=10*i;
  Circle(x,y,r);
  Delay(100);
end;
   end;

Procedure dvigenie1;
var
x,y,z,r:integer;
i:byte;
begin
for i:=10 downto 1 do
begin
  x:=450;
  y:=150;
  r:=10*i;
  Circle(x,y,r);
end;
   end;

begin
d:=detect;
InitGraph(d,m,'');
SetBkColor (7);
readln;
 for x:=200 to 450 do begin
  x:=x+10; 
ClearDevice;
dvigenie;
dvigenie1;
  if x=450 then 
     for x:=450 downto 200 do 
       x:=x-10;
ClearDevice;
dvigenie;
dvigenie1;
end;
closegraph;
end.
Тогда вам надо будет убрать циклы из процедур. И достаточно будет одной процедуры с двумя кругами, зачем две? И зачем вам эта Procedure krugi;? Возможны ошибки, но главное чтоб вы суть уловили, так как у меня нет возможности откомпилировать ваш код.
Люблю на ты.Я человек простой

Последний раз редактировалось Leshii; 06.05.2012 в 19:54.
Leshii вне форума Ответить с цитированием
Старый 06.05.2012, 20:05   #5
Alina111
Пользователь
 
Регистрация: 20.12.2011
Сообщений: 40
По умолчанию

В этой процедуре начальное положение мишени.
Спасибо,сейчас попробую разобраться)
Alina111 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
графика Паскаль - движение фигуры Nataly026 Паскаль, Turbo Pascal, PascalABC.NET 6 18.04.2012 23:20
Движение колец и Движение линий сверху Iren1993 Помощь студентам 2 07.11.2011 19:48
движение языков пламени или костер (огонь) - графика на Pascal ABC Дариiя Помощь студентам 2 19.06.2011 17:55
Движение полукруга горизонтально по форме - отражение от краёв. Графика Delphi7 detalik Помощь студентам 33 20.04.2011 16:21
Графика.Движение кораблика. chebumisha Общие вопросы C/C++ 10 05.05.2010 15:13