1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Добрый день! Нужна помощь в решении такой задачи: Построить движущегося вправо,влево.. человечка с анимированными конечностями с помощью псевдографики, с использованием собственных процедур, никаких модулей кроме 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);
-------------------------------------------------------------------------- Помогите пожалуйста приклеить к нему руки+еще чтобы двигались вправо и вверх вниз, вообщем что руками махал)) сам похоже уже не справлюсь
Тегами для подсветки кода пользуйся...
Сообщение отредактировано: volvo - 19.10.2009 14:08
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}
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}
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.