Перемещение объектов стрелками - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Круг- управляемый объект, прямоугольник-свободный (движется сам по заданной траектории). Заранее спасибо!

Решение задачи: «Перемещение объектов стрелками»

textual
Листинг программы
uses ABCObjects, GraphABC, Timers;
 
const h=500; //ВЫСОТА ОКНА
      w=800; //ШИРИНА ОКНА
   
var x_c:integer :=100; //Х КРУГА
    y_c:integer :=h div 2; //У КРУГА
    r_c:integer :=30; //РАДИУС КРУГА
    cir_sh:=5; //ШАГ ПЕРЕМЕЩЕНИЯ КРУГА
    
    h_r:integer :=50; //ВЫСОТА ПРЯМОУГОЛЬНИКА
    w_r:integer :=80; //ШИРИНА ПРЯМОУГОЛЬНИКА
    x_r:integer :=w-w_r-10; //Х ПРЯМОУГОЛЬНИКА 
    y_r:integer :=10; //У ПРЯМОУГОЛЬНИКА 
    v_r:integer :=1; //СКОРОСТЬ ПРЯМОУГОЛЬНИКА (ЧЕМ НИЖЕ ЗНАЧЕНИЕ, ТЕМ ВЫШЕ СКОРОСТЬ)
    l_r1:boolean :=true; //НАПРАВЛЕНИЕ ПРЯМОУГОЛЬНИКА ПО ВЕРТИКАЛИ
    l_r2:boolean :=true; //ПОЛОЖЕНИЕ ПРЯМОУГОЛЬНИКА НА ГОРИЗОНТАЛИ     
    rec_sh:=2; //ШАГ ПЕРЕМЕЩЕНИЯ ПРЯМОУГОЛЬНИКА  
    
    cir:=new CircleABC(x_c+r_c,y_c+r_c,r_c,clred); //КРУГ
    rec:=new RectangleABC(x_r,y_r,w_r,h_r,clblue); //ПРЯМОУГОЛЬНИК
    
procedure Moving_cir(a:integer);
begin
 
 case a of
 87:dec(y_c,cir_sh);
 65:dec(x_c,cir_sh);
 83:inc(y_c,cir_sh);
 68:inc(x_c,cir_sh);
 end;
 
 cir.MoveTo(x_c,y_c);
 
end;
 
procedure Moving_rec;
begin
 //ЗДЕСЬ ЗАДАЁТСЯ ШАГ ТРАЕКТОРИИ ПРЯМОУГОЛЬНИКА
 if l_r1 then inc(y_r,rec_sh) else dec(y_r,rec_sh);
 if (y_r<=10) or (y_r>=h-h_r-10) then if l_r1 then l_r1:=false else l_r1:=true;
 
 {if (rec.PtInside(x_c+r_c,y_c)) or (rec.PtInside(x_c+r_c+r_c,y_c+r_c)) or (rec.PtInside(x_c+r_c,y_c+r_c+r_c)) or (rec.PtInside(x_c,y_c+r_c)) 
 then if l_r2 then 
 begin
  x_r:=10;
  l_r2:=false;
 end else 
 begin
  x_r:=w-w_r-10;
  l_r2:=true;
 end;} {ЕСЛИ КРУГ СОПРИКОСНУЛСЯ С ПРЯМОУГОЛЬНИКОМ, ОН ПЕРЕМЕСТИТСЯ НА ДРУГОЙ КОНЕЦ ОКНА}
 
 rec.MoveTo(x_r,y_r);
end;
 
procedure Settings;
begin
 SetWindowSize(w,h);
 window.Title:='Перемещение объектов';
 window.IsFixedSize:=true;
end;
 
var t:=new Timer(v_r,Moving_rec); //ТАЙМЕР
 
begin
 Settings;
 t.Start;
 OnKeyDown+=Moving_cir;
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы