Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Падение тела и его подпрыгивание


Автор: NitreX 16.2.2006, 03:09
Немогу сделать такую задачку:
1). нарисовать тело средствами Round....
2). Пользователь вводит высоту h...
3). тело падает с высоты h.. и подпрыгивает!

Автор: Fixin 16.2.2006, 16:07
Вообще не понятно, что нужно. Анимированное падение тела и отскакивание от поверхности? И на чем надо делать?
Там сверху правила есть.

Автор: Albinos_x 16.2.2006, 21:04
делфи...от туда тема перенесена... и ещё в разделе делфи другого форума постили...
Цитата(NitreX @ 16.2.2006, 03:09 Найти цитируемый пост)
Немогу сделать такую задачку:

уже раз спрашивал.... так в чём заключается "не могу сделать"... или вы хотите чтоб вам целиком прогу накатали?

Автор: NitreX 17.2.2006, 01:32
ану посмотрите... вот есть наработкиsmile)
но тело нада рисовать.. а не TImage....
Помогите...
П.С: И тело (шарик) не подпрыгивает, а останавливается!!
Код

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a, i, j, k, l, m, n : integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Picture.LoadFromFile('C:\2.bmp');
Image1.Refresh;
i := 40;
j := 250;
k := 120;
l := 250;
m := 180;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Image1.SetBounds(100, i, 100, 100);
i := i + 5;
If i > 250 then
begin
Image1.SetBounds(100, j, 100, 100);
j := j - 4;
end;
If j < 120 then
begin
Image1.SetBounds(100, k, 100, 100);
k := k + 3;
end;
If k > 250 then
begin
Image1.SetBounds(100, l, 100, 100);
l := l - 2;
end;
If l < 180 then
begin
Image1.SetBounds(100, m, 100, 100);
m := m + 2;
If m > 250 then Timer1.Destroy;
end;
end;
end.


Модератор: пользуйтесь тегами [cоde][/cоdе]

Автор: Akina 17.2.2006, 10:16
NitreX
1) Существует тег "код" - его НУЖНО использовать чтобы не строгать лапшу. Исправь свой постинг.
2) Код надо комментировать - никому не интересно догадываться нафига ты ввел переменную Зю...
3) А соударение - упругое?

Автор: mvdr 17.2.2006, 11:46
Цитата(NitreX @ 16.2.2006, 03:09 Найти цитируемый пост)
2). Пользователь вводит высоту h...
3). тело падает с высоты h.. и подпрыгивает!

физику надо учитывать? т.е. высота подскока реальная или просто на ту же самую?

В любом случае: рисование-перерисовка в новом положении - затирание старого.

Автор: Albinos_x 17.2.2006, 13:24
Цитата(NitreX @ 16.2.2006, 03:09 Найти цитируемый пост)
1). нарисовать тело средствами Round....

обязательно Round-ом или можно Ellipse или Rectangle ?
Цитата(NitreX @ 17.2.2006, 01:32 Найти цитируемый пост)
И тело (шарик) не подпрыгивает, а останавливается!!

Round-ом врят ли шарик насисуешь... если только приближённо и что значит останавливается? перед этим писали :
Цитата(NitreX @ 16.2.2006, 03:09 Найти цитируемый пост)
с высоты h.. и подпрыгивает!

---------

Цитата(Akina @ 17.2.2006, 10:16 Найти цитируемый пост)
1) Существует тег "код" - его НУЖНО использовать чтобы не строгать лапшу. Исправь свой постинг.
2) Код надо комментировать - никому не интересно догадываться нафига ты ввел переменную Зю...

точно замечено...

---
NitreX,
тебя интересует что-то вроде этого http://www.zoforum.zeroes-and-ones.com.ru/index.php?act=Attach&type=post&id=2185 или по http://www.zoforum.zeroes-and-ones.com.ru/index.php?showtopic=624&st=0&#entry2185

Автор: NitreX 18.2.2006, 02:06
Цитата

физику надо учитывать? т.е. высота подскока реальная или просто на ту же самую?

да... физика учитывать!
Цитата

ound-ом врят ли шарик насисуешь...

ну можно не шарик..... проста тело какое нибуть!
Цитата

тебя интересует что-то вроде этого приложение

да...... это оно... тока исходники нужны мнеsmile)) плиз скинь!

Автор: cardinal 18.2.2006, 03:09
NitreX, ты так и не понял. Подпрыгивать он должен на туже высоту или на меньшую (то есть в итоге он должен когда то лежать на земле)?

Короче и в том и в другом случае все сводится в дифф.уравнению. Или вида
(d2/dx2 x) + cx = 0
или
(d2/dx2 x) + a*(d/dx x) + c*x = 0.
То есть колебание с затуханием и без... Такое проходили? Решение уравнения известно? (В каждом учебнике есть). В чем проблема?

Автор: Albinos_x 18.2.2006, 08:42
Цитата

В чем проблема?

видно в реализации

простой http://www.zoforum.zeroes-and-ones.com.ru/index.php?act=Attach&type=post&id=2191

Автор: KostyaK 15.12.2006, 12:24
Если я правильно понял, стит задача промоделировать падение тела с заданной высоты + упругое соударение. С точки зрения физики - задача школьная.

Теперь насчёт её реализации в Delphi. 

Движение графических объектов по заданным законам - классическая задача, которую решают при изучении ООП. Поэтому перед тем, как что-то рисовать, посмотрите учебник Фаронова "Turbo Pascal". У него есть целая глава, посвящённая реализации идей ООП в Pascal - е. И рассматривается как раз пример с рисованием графических объектов (конечно, средствами BP7.0).
Вам надо будет 
1) перенести этот код в Delphi (что касается объявления объктов)
2) реализовать свои методы для этих объектов (отобразить, сдвинуть и пр)
3) ну и собственно реализовать свой алгоритм движения. Скорее всего, создав дополнительные методы.

Автор: Alexeis 15.12.2006, 12:59
Ну ну последнее сообщение Дата 18.2.2006, 08:42 (ссылка)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)