Цитата:
Сообщение от 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.
Рисунок, конечно, примитивный, но если нужны всякие рюшечки-кнопочки-клавиши, напишите - сделаем.