IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Псевдографика, построение человечка,анимация конечностей
bakalava92
сообщение 19.10.2009 9:31
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Никита

Репутация: -  0  +


Добрый день! Нужна помощь в решении такой задачи: Построить движущегося вправо,влево.. человечка с анимированными конечностями с помощью псевдографики, с использованием собственных процедур, никаких модулей кроме CRT использовать нельзя. Собственно не могу сделать руки, получается либо сделать их подвижными по оси Y, но по оси X они не двигаются, либо наоборот

Код для построения человечка написал:

uses CRT;
var
g,i:integer;


procedure circle(Radius,Horizontal,Vertical:integer);
var
l,x,y:integer;
begin
for l:=0 to 360 do
begin
x:=round(Radius*sin(l)+Horizontal);
y:=round(Radius*cos(l)+Vertical);
GoToXY(x,y);
write('*');
end
end;


procedure HorizontalLine(y,b1,b2:integer);
begin
for g:=b1 to b2 do
begin
GoToXY(g,y);
writeln('*');
end
end;


procedure VerticalLine(x,b1,b2:integer);
begin
for g:=b1 to b2 do
begin
GoToXY(x,g);
writeln('*');
end
end;


begin
clrscr;
for i:=1 to 60 do
begin
textcolor(red);

Circle(3,15+i,4); {golova}

Circle(1,19+i,11); {pugovica1}
Circle(1,19+i,14); {pugovica2}

HorizontalLine(9,8+i,22+i); {tulovishe}
HorizontalLine(16,8+i,22+i);

VerticalLine(8+i,10,15); {tulovishe}
VerticalLine(22+i,10,15);
VerticalLine(15+i,9,15);

VerticalLine(15+i,8,14); {sheya}

VerticalLine(15+i,17,22); {nogi}
VerticalLine(11+i,17,22);
VerticalLine(19+i,17,22);
VerticalLine(17+i,22,24);
VerticalLine(13+i,22,24);

HorizontalLine(22,11+i,19+i);


delay(50000);

textcolor(black);

Circle(3,15+i,4); {golova}

Circle(1,19+i,11); {pugovica1}
Circle(1,19+i,14); {pugovica2}

HorizontalLine(9,8+i,22+i); {tulovishe}
HorizontalLine(16,8+i,22+i);

VerticalLine(8+i,10,15); {tulovishe}
VerticalLine(22+i,10,15);
VerticalLine(15+i,9,15);

VerticalLine(15+i,6,14); {sheya}

VerticalLine(15+i,17,22); {nogi}
VerticalLine(11+i,17,22);
VerticalLine(19+i,17,22);
VerticalLine(17+i,22,24);
VerticalLine(13+i,22,24);

HorizontalLine(22,11+i,19+i);

end;
readln
end.

--------------------------------------------------------------------------
Помогите пожалуйста приклеить к нему руки+еще чтобы двигались вправо и вверх вниз, вообщем что руками махал)) сам похоже уже не справлюсь mega_chok.gif

Тегами для подсветки кода пользуйся...

Сообщение отредактировано: volvo - 19.10.2009 14:08
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
bakalava92
сообщение 21.10.2009 23:59
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Никита

Репутация: -  0  +


Всем спасибо, уже сделал все!


program Human;
uses CRT;
var
g,j,i:integer;
k:boolean;


procedure circle(Radius,Horizontal,Vertical:integer); {postroenie kruga}
var
l,x,y:integer;
begin
for l:=0 to 360 do {cikl s parametrom}
begin
x:=round(Radius*sin(l)+Horizontal); {nahodim i okruglyaem koordinatu X}
y:=round(Radius*cos(l)+Vertical); {nahodim i okruglyaem koordinatu Y}
GoToXY(x,y); {peremeshaem kursor v tochku c koordinatami (X,Y)}
write('*'); {stavim v tochke s koordinatami (X,Y) simvol * }
end;
end;


procedure HorizontalLine(y,b1,b2:integer); {postroenie gorizontalnoy linii}
begin
for g:=b1 to b2 do {cikl s parametrom}
begin
GoToXY(g,y); {perevodim kursor v tochku s koordinatami (G,Y)}
writeln('*'); {stavim v tochke s koordinatami (G,Y) simvol * }
end;
end;


procedure VerticalLine(x,b1,b2:integer); {postroenie vertikalnoy linii}
begin
for g:=b1 to b2 do {cikl s parametrom}
begin
GoToXY(x,g); {perevodim kursor v tochku s koordinatami (X,G)}
writeln('*'); {stavim v tochke s koordinatami (X,G) simvol * }
end;
end;


procedure line(x1,y1,x2,y2:integer); {liniya - algoritm Brasenhaima}
var
g,x,y,dx,dy,s1,s2,e,i:integer;
begin
x:=x1;
y:=y1;
dx:=abs(x2-x1);
dy:=abs(y2-y1);
if x2-x1>0 then s1:=1 else {operator uslovnogo perehoda}
if x2-x1<0 then s1:=-1 else s1:=0;
if y2-y1>0 then s2:=1 else
if y2-y1<0 then s2:=-1 else s2:=0;
if dy<=dx then
begin
e:=2*dy-dx;
for i:=0 to dx do {cikl s parametrom}
begin
gotoxy(x,y); {peremeshaem kursor v tochku s koordinatami (X,Y)}
write('*'); {stavim v tochke s koordinatami (X,Y) simvol * }
if e>=0 then {cikl uslovnogo perehoda}
begin
y:=y+s2;
e:=e-2*dx;
end;
e:=e+2*dy;
x:=x+s1;
end;
end
else
begin
e:=2*dx-dy;
for i:=0 to dy do {cikl s parametrom}
begin
gotoxy(x,y); {peremeshaem kursor v tochku s koordinatami (X,Y)}
write('*'); {stavim v tochke s koordinatami (X,Y) simvol * }
if e>=0 then {uslovie, operator uslovnogo perehoda}
begin
x:=x+s1;
e:=e-2*dy;
end;
e:=e+2*dx;
y:=Y+s2;
end;
end;
end;

begin
clrscr; {ochistka ekrana}
j:=0; k:=true;
repeat {povtor, cikl s post usloviem}
repeat
inc(i); {shag, analogichno i:=i+1}

textcolor(red); {cvet teksta krasniy}

Circle(3,15+i,4); {golova}

Circle(1,19+i,11); {pugovica1}
Circle(1,19+i,14); {pugovica2}

HorizontalLine(9,8+i,22+i); {tulovishe}
HorizontalLine(16,8+i,22+i);

VerticalLine(8+i,10,15); {tulovishe}
VerticalLine(22+i,10,15);
VerticalLine(15+i,9,15);

VerticalLine(15+i,8,14); {sheya}

VerticalLine(15+i,17,22); {nogi}
VerticalLine(11+i,17,22);
VerticalLine(19+i,17,22);
VerticalLine(17+i,22,24);
VerticalLine(13+i,22,24);

HorizontalLine(22,11+i,19+i);

Line(8+i,9,4+i,13-j); {ruki}
Line(22+i,9,26+i,13-j);
delay(30000); {zaderzhka}
if (j<2) and (k=true) then {uslovie, operator uslovnogo perehoda}
inc(j) {tozhe samoe chto i j:=j+1}
else
begin
k:=false;
dec(j); {tozhe samoe chto i j:=j-1}
end;
if j=0 then {uslovie, operator uslovnogo perehoda}
begin
k:=true;
end;
clrscr; {ochistka ekrana}
until (i=50)or(keypressed=true); {cikl s post usloviem}
repeat {cikl s post usloviem}
dec(i); {tozhe samoe chto i i:=i-1}

textcolor(red); {cvet teksta krasniy}

Circle(3,15+i,4); {golova}

Circle(1,19+i,11); {pugovica1}
Circle(1,19+i,14); {pugovica2}

HorizontalLine(9,8+i,22+i); {tulovishe}
HorizontalLine(16,8+i,22+i);

VerticalLine(8+i,10,15); {tulovishe}
VerticalLine(22+i,10,15);
VerticalLine(15+i,9,15);

VerticalLine(15+i,8,14); {sheya}

VerticalLine(15+i,17,22); {nogi}
VerticalLine(11+i,17,22);
VerticalLine(19+i,17,22);
VerticalLine(17+i,22,24);
VerticalLine(13+i,22,24);

HorizontalLine(22,11+i,19+i);

Line(8+i,9,4+i,13-j); {ruki}
Line(22+i,9,26+i,13-j);
delay(30000); {zaderzhka}
if (j<2) and (k=true) then {uslovie, operator uslovnogo perehoda}
inc(j) {tozhe samoe chto j:=j+1}
else
begin
k:=false;
dec(j); {tozhe samoe chto i j:=j-1}
end;
if j=0 then {uslovie, operator uslovnogo perehoda}
begin
k:=true;
end;
clrscr; {ochistka ekrana}
until (i=0)or(keypressed=true); {cikl s post usloviem}
until keypressed=true;
end.



 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 14:20
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"