Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.
Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.
Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.
Ну Вы хоть словами опишите - что за "гармошка" за такая?Помогите написать программу, выводящую на экран анимацию "гармошка"
Хорошо, попробую на выходных сотворить. Только сразу предупреждаю:ну как бы объяснить... нужна анимация движения обычной гармошки))
как то так: tehnobaian только строго по горизонтали, без колебаний вверх-вниз)
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.
Да, очень хороший тест. Света, попробуйте запустить эту программку, и если всё будет нормально, то так и сделаем инициализацию.Стандартная процедура инициализации графики описана в справке среды разработки. На всякий случай привожу здесь (вдруг вам лень искать)
...и молчанье гробовое было ему ответом...Света, попробуйте запустить эту программку, и если всё будет нормально, то так и сделаем инициализацию.
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.
InitGraph(grDriver, grMode, '');
InitGraph(grDriver, grMode, 'D:\TP\BIN\');
Хм... до крайности странно. У меня гармошка вот именно "играет в обе стороны", сперва растягивается, потом, дойдя до левого края экрана, сжимается, потом обратно идёт, и так до нажатия любой клавиши. Похоже, у Вас не срабатывает условие окончания цикла растяжки и перехода к сжатию. Ладно, подумаю.программа заработала, спасибо. только получается, что гармошка не "играет туда-обратно" а растягивается только в одном направлении. можно, пожалуйста, подредактировать так, чтобы гармошка "играла в обе стороны"?)
Function LeftBorder(Step:Word):Boolean;
var LB:Integer;
begin
LB:=-16*Step-35+X0;
LeftBorder:=LB>0;
end;
Совсем не понимаю. Сейчас запустил (с измененной функцией) в TP7 (обычно я работаю с FreePascal) - безупречно!у меня tp7 тоже грамонь играет в одну сторону.
а со сменой функции вообще какие то артефакты, не правильно отрисовывает.
Uses CRT, Graph;
Var
X0,Y0,StepX,StepX_max:Word;
grDriver, 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;
Begin
grDriver:=Detect;
InitGraph(grDriver, grMode, [COLOR=Red]'________'[/COLOR]); [COLOR=Red][B]- тут самостоятельно![/B]
[/COLOR]
X0:=GetMaxX div 2;
Y0:=GetMaxY div 2;
StepX_max:=Trunc((X0-35)/16);
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 StepX<=StepX_max then
begin
ClearDevice;
Garm(StepX);
Left(StepX);
Right(StepX);
OutTextXY(X0,Y0*2-20,'Press any key to stop...');
Delay(100);
end;
until (StepX>=StepX_max) 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.