Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Анимацыя в паскале

Автор: potay 22.11.2006 3:52

program Man;
uses Graph,crt,ZVUK;
var
driver,mode,x,y,i:integer;
procedure Chelovek;
begin
circle(315,100,20);
line(315,120,315,230);
line(315,230,215,330);
line(315,230,415,330);
line(315,120,215,220);
line(315,120,415,220);
end;
begin
driver:=detect;
mode:=detect;
initgraph(driver,mode,'C:\tp7');
for i:=1 to 10000 do
begin
setcolor(0);
Chelovek;
Delay(100);
setcolor(white);
Chelovek;
end;
readln;
end.


Добавлено:
Покажите хотябы как сдвинуть одну линию!!!
М
Используй теги! Lapp


Автор: мисс_граффити 22.11.2006 4:18

1. нарисовал линию каким-то цветом
2. нарисовал такую же линию (с теми же координатами) цвета фона
3. нарисовал цветную линию в новом месте.

только все будет происходить очень быстро, ты не успеешь заметить. поэтому между описанными операциями вставь delay(n), где n - время задержки.

Автор: potay 22.11.2006 4:39

Цитата(мисс_граффити @ 22.11.2006 1:18) *

1. нарисовал линию каким-то цветом
2. нарисовал такую же линию (с теми же координатами) цвета фона
3. нарисовал цветную линию в новом месте.

только все будет происходить очень быстро, ты не успеешь заметить. поэтому между описанными операциями вставь delay(n), где n - время задержки.


Только рисовать надо не в процедуре???

Автор: potay 22.11.2006 5:00

Цитата(potay @ 22.11.2006 1:39) *

Только рисовать надо не в процедуре???

Ну всмысле писать??? blink.gif

Автор: lapp 22.11.2006 8:47

Во-первых, ты лучше сначала рисуй, потом жди, а потом стирай. Это означает, что ты должен сначала использовать белый цвет, а потом черный. Проверь результат, прежде чем читать дальше..

Проверил? Теперь совет: вставь параметры в процедуру Man, чтоб можно было рисовать человека в любом месте экрана. Публикую внизу модифицированную мной программу - разберись, как она работает, и приходи за вопросами дальше..

program Man;
uses Graph,crt{,ZVUK};
var
driver,mode,x,y,i,XMan,YMan,dX,dY,b:integer;

procedure Chelovek(x,y:integer);
begin
circle(x,y,20);
line(x,y+20 ,x ,y+130);
line(x,y+130,x-100,y+230);
line(x,y+130,x+100,y+230);
line(x,y+20 ,x-100,y+120);
line(x,y+20 ,x+100,y+120);
end;

begin
driver:=detect;
mode:=detect;
initgraph(driver,mode,'C:\tp7');
XMan:=GetMaxX div 3;
YMan:=GetMaxy div 2;
dX:=1;
dY:=1;
b:=GetMaxX div 6;
for i:=1 to 10000 do begin
setcolor(White);
Chelovek(XMan,YMan);
Delay(10);
setcolor(Black);
Chelovek(XMan,YMan);
XMan:=XMan+dX;
if (XMan>=GetMaxX-b)or(XMan<=b) then dX:=-dX;
YMan:=YMan+dY;
if (YMan>=GetMaxY-b)or(YMan<=b) then dY:=-dY;
end;
readln;
end.

Автор: potay 22.11.2006 11:59

Вышло у тя неплохо, но мне надо чтобы он ноги роздвигал и здвигал, тоже самое и с руками.
Вот чтото похожое!!


program Man;
uses Graph,crt,ZVUK;
var
driver,mode,x,y,i:integer;
procedure Chelovek;
begin
circle(315,100,20);
line(315,120,315,230);
line(315,230,215,330);
line(315,230,415,330);
line(315,120,215,220);
line(315,120,415,220);
line(315,120,215,90);
line(315,120,415,90);
line(315,230,215,290);
line(315,230,415,290);
setcolor(0);
line(315,230,215,330);
line(315,230,415,330);
line(315,120,215,220);
line(315,120,415,220);
line(315,120,215,90);
line(315,120,415,90);
line(315,230,215,290);
line(315,230,415,290);
end;
begin
initgraph(driver,mode,'C:\tp7');
for i:=1 to 200 do
begin
setcolor(3);
Chelovek;
Delay(3000);
setcolor(0);
Chelovek;
end;
readln;
end.


М
Про теги еще раз напомнить? Что, тебе кнопка "Изменить" недоступна?
volvo


Автор: lapp 22.11.2006 19:23

Цитата(potay @ 22.11.2006 8:59) *

Вышло у тя неплохо, но мне надо чтобы он ноги роздвигал и здвигал, тоже самое и с руками.
Вот чтото похожое!!

Уважаемый, я не говорил, что решаю твою задачу. Тебе был продемонстрирован принцип, а также удобный способ его реализации. Если тебе надо двигать руки-ноги - рекомендую, сделай процедуру, для их рисования с параметром (скажем, угол наклона), а потом
рисуй-жди-стирай-двигай-рисуй-жди-стирай-двигай...

Ты что - думал, что я его двигал, чтоб повеселить тебя? Совсем ничего не уяснил?.. Важен принцип. И его ты проигнорировал, как следует из того, что ты сделал..

Добавляю чуть позже.
Приведу аналогию.
Допустим, ты мастер игрушек (обычных, не компьютерных). К тебе приходит кто-то и говорит:
- Я вот сделал человека, теперь его надо научить двигать руками-ногами. Помоги мне.
И показывает фигурку из цельного куска дерева..
Что скажет мастер? Эту фигурку надо выбросить и сделать все иначе. Отдельно сделать руки и ноги, при этом оставить место, где их наложить и скрепить осями.
Верно ведь?.. smile.gif

Автор: potay 22.11.2006 19:59

Понял, буду исправлятса! yes2.gif