Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 16.04.2014, 22:36   #1 (permalink)
Светик123
Member
 
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Турбо Паскаль. Задание на анимацию

Помогите написать программу, выводящую на экран анимацию "гармошка"
Светик123 вне форума   Ответить с цитированием

Старый 16.04.2014, 22:36
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

На форуме можно найти похожие топики, помогу вам в этом

Турбо Паскаль. Тип запись
Турбо Паскаль. Рекурсии
Программа в Турбо-Паскаль 7,0
Задание Паскаль

Старый 16.04.2014, 22:52   #2 (permalink)
poiu
Member
 
Регистрация: 05.03.2014
Сообщений: 200
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 834
По умолчанию

я даже в голове это смутно представляю =)
poiu вне форума   Ответить с цитированием
Старый 17.04.2014, 01:22   #3 (permalink)
Светик123
Member
 
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

я вообще в замешательстве(
Светик123 вне форума   Ответить с цитированием
Старый 17.04.2014, 09:38   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Светик123 Посмотреть сообщение
Помогите написать программу, выводящую на экран анимацию "гармошка"
Ну Вы хоть словами опишите - что за "гармошка" за такая?
Vladimir_S вне форума   Ответить с цитированием
Старый 17.04.2014, 21:31   #5 (permalink)
Светик123
Member
 
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ну как бы объяснить... нужна анимация движения обычной гармошки))
как то так: только строго по горизонтали, без колебаний вверх-вниз)
Светик123 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 18.04.2014, 09:48   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Светик123 Посмотреть сообщение
ну как бы объяснить... нужна анимация движения обычной гармошки))
как то так: только строго по горизонтали, без колебаний вверх-вниз)
Хорошо, попробую на выходных сотворить. Только сразу предупреждаю:
1. Графика - Borland.
2. Инициализацию графического режима (задание параметров функции InitGraph) делаете самостоятельно: у меня она настроена под мою систему и графика инициализируется через использование написанного мною спец. модуля, который у Вас работать не будет.
Если что-то из этого не устроит, напишите.
Vladimir_S вне форума   Ответить с цитированием
Старый 18.04.2014, 23:38   #7 (permalink)
Светик123
Member
 
Регистрация: 02.03.2014
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

я не очень поняла про задание параметров функции,так как раньше не имела дела с графическим модулем. следовательно,не очень представляю как это сделать. но если не очень сложно - постараюсь понять
Светик123 вне форума   Ответить с цитированием
Старый 19.04.2014, 08:28   #8 (permalink)
Daniellos
Хозяин Медной Горы
 
Аватар для Daniellos
 
Регистрация: 01.08.2011
Адрес: Армавир
Сообщений: 12,159
Записей в дневнике: 8
Сказал(а) спасибо: 751
Поблагодарили 88 раз(а) в 27 сообщениях
Репутация: 57416
По умолчанию

Стандартная процедура инициализации графики описана в справке среды разработки.
На всякий случай привожу здесь (вдруг вам лень искать)

Код:
Uses Graph;

Var  grDriver : Integer;
      grMode : Integer;
      ErrCode : Integer;

Begin
 grDriver:=Detect;
 InitGraph(grDriver, grMode, '');
 ErrCode:=GraphResult;
 If ErrCode = grOk Then
  Begin
   { Графика }
   Line(0, 0, GetMaxX, GetMaxY);
   ReadLn;
   CloseGraph;
  End
 Else WriteLn('Ошибка инициализации графики:', GraphErrorMsg(ErrCode));
End.
Эта программа рисует диагональную линию из левого верхнего угла экрана, до правого нижнего.
Daniellos вне форума   Ответить с цитированием
Старый 19.04.2014, 09:17   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Daniellos Посмотреть сообщение
Стандартная процедура инициализации графики описана в справке среды разработки. На всякий случай привожу здесь (вдруг вам лень искать)
Да, очень хороший тест. Света, попробуйте запустить эту программку, и если всё будет нормально, то так и сделаем инициализацию.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.04.2014, 10:38   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Света, попробуйте запустить эту программку, и если всё будет нормально, то так и сделаем инициализацию.
...и молчанье гробовое было ему ответом...
Ладно, в любом случае раз обещал - сделал. Будем исходить из того, что выложенная Давидом тестовая программка работает, и сделаем инициализацию, как там:
Код:
Uses CRT, Graph;

Var
 X0,Y0,StepX:Word;
 grDriver : Integer;
 grMode : Integer;

Procedure Garm(Step:Word);
var i:byte;
begin
 SetLineStyle(SolidLn,0,ThickWidth);
 Line(X0,Y0-40,X0,Y0+40);
 for i:=1 to 8 do
  begin
   Line(X0-Step*2*i,Y0-40,X0-Step*2*i,Y0+40);
   Line(X0+Step*2*i,Y0-40,X0+Step*2*i,Y0+40);
  end;
 SetLineStyle(SolidLn,0,NormWidth);
 for i:=1 to 8 do
  begin
   Line(X0-Step*(2*i-1),Y0-30,X0-Step*(2*i-1),Y0+30);
   Line(X0+Step*(2*i-1),Y0-30,X0+Step*(2*i-1),Y0+30);
  end;
 MoveTo(X0,Y0-40);
 for i:=1 to 8 do
  begin
   LineTo(X0-step*(2*i-1),Y0-30);
   LineTo(X0-step*2*i,Y0-40);
  end;
 MoveTo(X0,Y0+40);
 for i:=1 to 8 do
  begin
   LineTo(X0-step*(2*i-1),Y0+30);
   LineTo(X0-step*2*i,Y0+40);
  end;
 MoveTo(X0,Y0-40);
 for i:=1 to 8 do
  begin
   LineTo(X0+step*(2*i-1),Y0-30);
   LineTo(X0+step*2*i,Y0-40);
  end;
 MoveTo(X0,Y0+40);
 for i:=1 to 8 do
  begin
   LineTo(X0+step*(2*i-1),Y0+30);
   LineTo(X0+step*2*i,Y0+40);
  end;
end;

Procedure Left(Step:Word);
begin
 SetLineStyle(SolidLn,0,ThickWidth);
 Rectangle(X0-16*Step,Y0-40,X0-16*Step-35,Y0+40);
 Line(X0-16*Step-20,Y0-40,X0-16*Step-20,Y0+40);
end;

Procedure Right(Step:Word);
begin
 SetLineStyle(SolidLn,0,ThickWidth);
 Rectangle(X0+16*Step,Y0-40,X0+16*Step+20,Y0+40);
end;

Function LeftBorder(Step:Word):Boolean;
begin
 LeftBorder:=X0-16*Step-35>0;
end;

Begin
 grDriver:=Detect;
 InitGraph(grDriver, grMode, '');

 X0:=GetMaxX div 2;
 Y0:=GetMaxY div 2;
 StepX:=4;
 ClearDevice;
 Garm(StepX);
 Left(StepX);
 Right(StepX);
 SetTextJustify(CenterText,BottomText);
 OutTextXY(X0,Y0*2-20,'Press any key to start...');
 ReadKey;
 Repeat
  StepX:=4;
  repeat
   StepX:=StepX+1;
   If LeftBorder(StepX) then
    begin
     ClearDevice;
     Garm(StepX);
     Left(StepX);
     Right(StepX);
     OutTextXY(X0,Y0*2-20,'Press any key to stop...');
     Delay(100);
    end;
  until Not(LeftBorder(StepX)) or KeyPressed;
  repeat
   StepX:=StepX-1;
   If StepX>3 then
    begin
     ClearDevice;
     Garm(StepX);
     Left(StepX);
     Right(StepX);
     OutTextXY(X0,Y0*2-20,'Press any key to stop...');
     Delay(100);
    end;
  until (StepX=3) or KeyPressed;
 Until KeyPressed;
 ReadKey;
 CloseGraph;
End.
Рисунок, конечно, примитивный, но если нужны всякие рюшечки-кнопочки-клавиши, напишите - сделаем.
Миниатюры
aa01.jpg   aa02.jpg   aa03.jpg  
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 09:06.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.