Задали задачу чтобы точка по окружности двигалась, я тут что-то писал, но как-то судя по всему криво, и не работает. помогите пожалуйста.
За ренее спасибо
program figure;
uses graph, crt;
type
TPoint = object
x, y, r : integer;
t: real;
color : integer;
procedure Show;
procedure Hide;
procedure Move(dx, dy : integer);
end;
procedure TPoint.Show;
begin
putpixel (x, y, color);
end;
procedure TPoint.Hide;
begin
putpixel (x, y, emptyfill);
end;
procedure TPoint.Move;
begin
Hide;
x:= round(dx+r*cos(t)); y:=round(dy+r*sin(t));
Show;
end;
var
GrDriver : integer;
GrMode : integer;
p1 : TPoint;
r : integer;
t: real;
begin
GrDriver:=detect;
GrMode:=0;
initgraph(GrDriver, GrMode, '');
p1.x:=10; p1.y:= 20;
p1.color:=white;
p1.r:=10;
p1.t:=1;
p1.Show;
readkey;
p1.Move(5,5);
p1.Show;
readkey;
p1.Move(1,5);
p1.Show;
readkey;
closegraph;
end.
program figure;Так лучше?
uses graph, crt;
type
TPoint = object
c_x, c_y, r : integer;
x, y: integer;
color : integer;
constructor init(center_x, center_y, radius, acolor: integer);
procedure Show;
procedure Hide;
procedure Rotate;
end;
constructor tpoint.init(center_x, center_y, radius, acolor: integer);
begin
c_x := center_x; c_y := center_y; r := radius; color := acolor;
end;
procedure TPoint.Show;
begin
putpixel (x, y, color);
end;
procedure TPoint.Hide;
begin
putpixel (x, y, getbkcolor);
end;
procedure TPoint.Rotate;
var t: integer;
begin
for t := 0 to 359 do begin
Hide;
x:= round(c_x + r*cos(t*pi/180)); y:=round(c_y + r*sin(t*pi/180));
Show;
delay(10);
end;
end;
var
GrDriver, GrMode : integer;
p1: TPoint;
begin
GrDriver:=detect; GrMode:=0;
initgraph(GrDriver, GrMode, '');
p1.init(100, 100, 30, white);
p1.rotate;
readkey;
closegraph;
end.
! | Исправляем: 1) Название темы 2) Тег code |