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

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

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

 
 Ответить  Открыть новую тему 
> Человек разгоняется и прыгает в яму, Как это сделать?
сообщение
Сообщение #1


Новичок
*

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

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


Облазил весь форум и не нашел ничего подходящего. Вот сама задача:
Составить программу вывода на экран стилизованного "человека" в положении готовности осуществить прыжок в длину. При нажатии клавиши “Ввод” спортсмен осуществляет разбег и прыгает. Помогите, плиз, чем сможите.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Начинать всегда следует с того, что понять задачу.
А наиболее простой и надежный способ понять - сформулировать подробно своими словами.
Желательно указать сроки выполнения самой задачи и отдельных ее этапов, привлекаемые силы и оборудование, объем имеющихся средств и т.п.

Насколько я понимаю, эту задачу можно решать одним из, минимум, трех способов:
1. Как мультипликатор - нарисовать по кадрам, после чего тем или иным образом реализовать в алгоритме.
2. Как ученый-теоретик - составить математическую модель и ровести численное моделирование.
3. Как ученый экспериментатор - воспользоваться аппаратурой motion capture, после чего обработать данные, провести статистический анализ и вывести его результат на экран.

Во всех трех случаях вывод на экран - лишь конечный этап работы. Снаяала нужно разобраться с физикой движения.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Начнем с того, что это всего лишь лаба по программухе и ее нужно решить как можно проще, хотел бы методом раскодровки.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


я реализовывал вращающееся колесо... взял пэйнт и нарисовал движение колеса в нём)))
в итоге, происходит смещение кадра и изменение координаты по х...

если надо, могу скинуть
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Сбрось, посмотрим что у тебя получилось, но а может у тебя еще есть что-нить про человечка? smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата(Mystical @ 14.12.2008 9:54) *
но а может у тебя еще есть что-нить про человечка? smile.gif
Есть! У меня есть.

Вот:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Кажется, гостям нельзя картинки.. sad.gif
Но тогда вот это тоже сойде:
10.gif
- годится? По-моему очень даже ниче..
А тем, кто про физику движения, посоветуй первое предложение из их же мессаджа..
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


Цитата(andriano @ 14.12.2008 8:35) *

Начинать всегда следует с того, что понять задачу.
А наиболее простой и надежный способ понять - сформулировать подробно своими словами.
Желательно указать сроки выполнения самой задачи и отдельных ее этапов, привлекаемые силы и оборудование, объем имеющихся средств и т.п.

Насколько я понимаю, эту задачу можно решать одним из, минимум, трех способов:
1. Как мультипликатор - нарисовать по кадрам, после чего тем или иным образом реализовать в алгоритме.
2. Как ученый-теоретик - составить математическую модель и ровести численное моделирование.
3. Как ученый экспериментатор - воспользоваться аппаратурой motion capture, после чего обработать данные, провести статистический анализ и вывести его результат на экран.

Во всех трех случаях вывод на экран - лишь конечный этап работы. Снаяала нужно разобраться с физикой движения.


Может кто сможет реализавать эту задачку как мультипликатор (т.е. по кадрам). Я понимаю, что нудно сидеть и рисовать, но может у кого уже есть программка, или мож кому-то интересно это сделать smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


program WalkingHuman;
uses
Graph, Crt;
const
handlen = 60;
leglen = 80;
length = 10; {Длина штриха}
head = 30;
u = 17; {Смещение земли}
neck = 20; {Шея}
ground = 390; {Уровень земли}
step = 20; {Длина ступни}
pause = 17500; {Задержка}
stAng = pi/10; {Начальный угол}
dfAng = pi/30; {Величина изменения угла}
ratio = 2.5; {Сдвиг по фазе}
var
gd, gm, ec:integer; {Графика}
k: integer; {Смещение земли}
ang, stepAng, lapAng: real; {Углы}
ascent: integer; {Подьем тела}
shoulderX, shoulderY: integer;{Плечи}
loinX, loinY: integer; {Пояс}
lElbowX, lElbowY: integer; {Левый локоть}
rElbowX, rElbowY: integer; {Правый локоть}
rLapX, rLapY:integer; {Правое колено}
lLapX, lLapY:integer; {Левое колено}
lBrushX, lBrushY: integer; {Левая кисть}
rBrushX, rBrushY: integer; {Правая кисть}
lStepX, lStepY: integer; {Левая пятка}
rStepX, rStepY: integer; {Правая пятка}
lStep1X, lStep1Y: integer; {Левый носок}
rStep1X, rStep1Y: integer; {Правый носок}

procedure Earth(k:integer); {Рисование земли}
var
i:integer;
begin
Line(0, ground, GetMaxX, ground);
for i:= 0 to 12 do
Line(80*i - k, ground, 80*i - k, ground + length);
end;

procedure Body (head, shoulderX, shoulderY, loinX, loinY: integer);
begin
Circle(shoulderX, shoulderY - neck - head, head);
Line(shoulderX, shoulderY - neck, loinX, loinY);
end;

procedure Hand (shoulderX, shoulderY, elbowX, elbowY, brushX, brushY, vHend:integer);
begin
Line(shoulderX, shoulderY, elbowX, elbowY);
Line(elbowX, elbowY, brushX, brushY);
end;

procedure Leg (loinX, loinY, lapX, lapY, stepX, stepY, leglen, step1X, step1Y:integer; ang: real);
begin
Line(loinX, loinY, lapX, lapY);
Line(lapX, lapY, stepX, stepY);
Line(StepX, StepY, StepX + step, StepY);
end;

begin
{Инициализация графики}
gd:= Detect;
InitGraph(gd, gm, 'c:\bp\bgi ');
ec:= GraphResult;
if ec <> grOk then begin
Writeln('Ошибка инициализации', GraphErrorMsg(ec));
Halt;
end;
{Рисование}
shoulderX:= 320;
shoulderY:= 120;

loinX:= 320;
loinY:= 230;

repeat
SetColor(White);
OutTextXY(50, 50, 'Обычная походка');
ang:= pi/2 + stAng;
k:=0;
while ang > pi/3 do begin
ang:= ang - dfAng;
ascent:= Round(3*cos(5*ang));
SetColor(white);
Earth(k);
Body(head, shoulderX, shoulderY - ascent, loinX, loinY - ascent);
lElbowX:= Round(shoulderX + handlen*cos(ang));
lElbowY:= Round(shoulderY + handlen*sin(ang) );
rElbowX:= Round(shoulderX + handlen*(-cos(ang-dfAng+dfAng*ratio)));
rElbowY:= Round(shoulderY + handlen*(sin(ang-dfAng+dfAng*ratio)) );
lBrushX:= Round(shoulderX + 2*handlen*cos(ang-dfAng));
lBrushY:= Round(shoulderY + 2*handlen*sin(ang-dfAng) );
rBrushX:= Round(shoulderX + 2*handlen*(-cos(ang+dfAng*ratio)));
rBrushY:= Round(shoulderY + 2*handlen*(sin(ang+dfAng*ratio)) );

lLapX:= Round(loinX + leglen*(cos(ang)));
lLapY:= Round(loinY + leglen*(sin(ang)) );

rLapX:= Round(loinX + leglen*(-cos(ang+dfAng*ratio)));
rLapY:= Round(loinY + leglen*(sin(ang+dfAng*ratio)) );

lStepX:= Round(loinX + 2*leglen*(cos(ang+dfAng)));
lStepY:= Round(loinY + 2*leglen*(sin(ang+dfAng)) );
rStepX:= Round(loinX + 2*leglen*(-cos(ang-dfAng+dfAng*ratio)));
rStepY:= Round(loinY + 2*leglen*(sin(ang-dfAng+dfAng*ratio)) );

Hand(shoulderX, shoulderY - ascent , lelbowX, lelbowY - ascent , lbrushX, lbrushY - ascent , handlen);
Hand(shoulderX, shoulderY - ascent , relbowX, relbowY - ascent , rbrushX, rbrushY - ascent , handlen);
Leg(loinX, loinY - ascent , lLapX, lLapY - ascent
, lStepX, lStepY - ascent, lStep1X, lStep1Y - ascent, leglen, ang);
Leg(loinX, loinY - ascent , rLapX, rLapY - ascent , rStepX, rStepY - ascent , rStep1X, rStep1Y - ascent, leglen, ang);
Body(head, shoulderX, shoulderY - ascent, loinX, loinY - ascent);

Delay(pause);
SetColor(Black);
Hand(shoulderX, shoulderY - ascent , lelbowX, lelbowY - ascent , lbrushX, lbrushY - ascent , handlen);
Hand(shoulderX, shoulderY - ascent , relbowX, relbowY - ascent , rbrushX, rbrushY - ascent , handlen);
Leg(loinX, loinY - ascent , lLapX, lLapY - ascent
, lStepX, lStepY - ascent , lStep1X, lStep1Y - ascent, leglen, ang);
Leg(loinX, loinY - ascent , rLapX, rLapY - ascent , rStepX, rStepY - ascent , rStep1X, rStep1Y - ascent, leglen, ang);
Body(head, shoulderX, shoulderY - ascent, loinX, loinY - ascent);
Earth(k);
k:= k + u;
end;
until keypressed;
ReadLn;
CloseGraph;
end.


Вот этот код я нашел на форуме, здесь как-бы интуитивно понятно что к чему (хотя и не все, но многое). Так вот ясно, что здесь используется не мультипликация, а какая-то непонятная хрень(извините за выражение, но иначе это не назавеш, прошу прощения заранее у автора сего творения good.gif ). Так вот, что требуется от этого творения: может кто врубился и сможет посоветовать или дописать, чтобы этот человечек по нажатию клавиши "Ввод" разбегался и в конце прыгал в длину (имитация прыжка в длину с разбега). Плиз! кто может -- отзавитесь yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 8:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name