1 Востаннє редагувалося Torbins (19.01.2017 12:22:52)

Тема: Cтворення руху обєкта з перешкодами (Delphi)

procedure TForm1.Timer1Timer(Sender: TObject);
 var x,y:integer;
begin
 
x:=40;
y:=40;
 
shape1.Left:=shape1.Left+a*x;
shape1.Top:=shape1.Top+b*y;
 
 
if shape1.Left<=0 then a:=1;
if shape1.Left>=form1.width-shape1.width then a:=-1;
if shape1.top<=0 then b:=1;
if shape1.top>=form1.height-shape1.Height then b:=-1;
 end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
a:=1;
b:=1;
end;

потрібно зробити так, щоб обєкт обходив перешкоду. Дякую

2

Re: Cтворення руху обєкта з перешкодами (Delphi)

Гадаю, вам для початку треба:
- прибрати КАПС з заголовку, він відлякує людей;
- нормально описати, що ви робите, а що вам треба зробити. Слова "щоб об'єкт обходив перешкоду" можуть означати багато чого різного, спробуйте це намалювати;
- вирівняти код, його читати боляче (для особливо лінивих в останніх версіях є спеціальний пункт в меню для цього).

3

Re: Cтворення руху обєкта з перешкодами (Delphi)

bilykoks
Який об'єкт у вас виступатиме в ролі перешкоди?

4

Re: Cтворення руху обєкта з перешкодами (Delphi)

об'єкт -кулька, перешкода- прямокутник.      потрібно написати програму до теми "створення моделей рівномірного прямолінійного руху об'єкта, руху об'єкта на площині з перешкодами та з вибором шляху". Допоможіть будь ласка.

5

Re: Cтворення руху обєкта з перешкодами (Delphi)

Ну рухайте кульку вниз, вперед і вгору. Якщо вистачить сил - то вперед до прямокутника, вниз, вперед, вгору і знову вперед.

6

Re: Cтворення руху обєкта з перешкодами (Delphi)

Значить у вас є координати обох об'єктів, і ви легко можете визначити, чи вони зіткнулися. Типу такого:

if Shape1.Left < Shape2.Left then
begin
  if (Shape1.Left + Shape1.Width > Shape2.Left) and
    (Abs(Shape1.Top - Shape2.Top) < Shape1.Height)
  then
    //зіткнулися
end
else
//...

І приблизно те саме для підльоту кульки до прямокутника з різних сторін. Хоча якщо у вас можливий рух не лише по вертикалі та горизонталі, то тут доведеться згадувати шкільну геометрію, і вираховувати відстані між точками, опускати перпендикуляр із центру кульки на сторону прямокутника і таке інше.