Анимация: несколько концентрических "звезд", вращающихся относительно их центра построения - Pascal ABC

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

Создайте пожалуйста программу.(желательно сделать программу как можна проще) Программа должна выводить несколько концентрических "звезд", вращающиеся относительно их центра построения. Каждая звезда вписывается в круг радиусом R и центром (х0, y0) и повернута относительно предыдущей звезды на угол . В то же время на экране должно находится N звезд, все предыдущие звезды должны удаляться. Вывод звезд прекращать при нажатии любой клавиши.

Код к задаче: «Анимация: несколько концентрических "звезд", вращающихся относительно их центра построения - Pascal ABC»

textual
uses graphABC;
type Tzvezda=record
             x,y:integer;
             u:real;
            end;
procedure Zvezda(x,y:integer;u:real);
var  i,k,r1,r2:integer;
     p:array of Point;
     a:real;
begin
setlength(p,11);
r1:=40;
for k:=1 to 3 do
 begin
  a:=u;
  r2:=round(r1*0.382);
  for i:=0 to 9 do
   begin
    if i mod 2=1 then
     begin
      p[i].x:=x+round(r2*cos(a));
      p[i].y:=y-round(r2*sin(a));
     end
    else
     begin
      p[i].x:=x+round(r1*cos(a));
      p[i].y:=y-round(r1*sin(a));
     end;
    a:=a+pi/5;
   end;
  p[10]:=p[0];
  setpencolor(clRed);
  polyline(p);
  r1:=r1-10;
  end;
end;
var f:boolean;
procedure KeyPress(key:char);
begin
if key<>#0 then f:=false;
end;
const n=15;
var x,y,dx,dy,i:integer;
    a:array[1..n]  of Tzvezda;
    u:real;
begin
f:=true;
onkeypress:=KeyPress;
u:=pi/2;
dx:=windowwidth div 6;
dy:=windowheight div 4;
x:=dx;
y:=dy;
for i:=1 to n do
 begin
  a[i].x:=x;
  a[i].y:=y;
  a[i].u:=u;
  x:=x+dx;
  if i mod 5=0 then
   begin
    x:=dx;
    y:=y+dy;
   end;
  u:=u+pi/8;
 end;
lockdrawing;
repeat
clearwindow;
for i:=1 to n do
Zvezda(a[i].x,a[i].y,a[i].u);
sleep(50);
for i:=1 to n do
A[I].U:=A[I].U+0.1;
redraw;
until not(f);
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

11   голосов, оценка 4.273 из 5


СДЕЛАЙТЕ РЕПОСТ