Показать сообщение отдельно
Старый 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.
Рисунок, конечно, примитивный, но если нужны всякие рюшечки-кнопочки-клавиши, напишите - сделаем.
Изображения
   
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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