Разработка проэктов

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Разработка проэктов » Другое » Код программы


Код программы

Сообщений 1 страница 4 из 4

1

Здраствуйте,скажите пожалуйста будет ли приемлен этот код или можно сделать преще(код скачан из интернета для понимания принцыпа движения)

unit UnitPlanets;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,Math;
Type
TBody=class
public
  procedure StandardDraw(Canvas: TCanvas; Color: TColor; Radius: integer);
  procedure GetXY(Out X,Y: double); Virtual; Abstract;
  procedure Draw(Canvas: TCanvas); Virtual; Abstract;
  procedure Move(Canvas: TCanvas); Virtual; Abstract;
end;
TStar = class (TBody)
private
//ParentBody: TBody;
Fx: double;
Fy: double;
public
procedure GetXY(Out GX, GY: double); override;
procedure Draw(Canvas: TCanvas); override;
procedure Move(Canvas: TCanvas); override;
property X: double read Fx;
property Y: double read Fy;
end;

TSatellite = class(TBody)
private
ParentBody: TBody;
R: double;
Alpha: double; //Угловое перемещение тела
DAlpha: double;
public
procedure GetXY(Out X,Y: double); override;
procedure Move(Canvas: TCanvas); override;
end;

TPlanet = class(TSatellite)
public
procedure Draw(Canvas: TCanvas); override;
end;

0

2

Вот второй кусочек

TSputnic = class(TSatellite)
public
procedure Draw(Canvas: TCanvas); override;
Constructor Create(GR: double);
end;

type
  TSkyForm = class(TForm)
    ButtonExit: TButton;
    Image1: TImage;
    Timer1: TTimer;
    procedure ButtonExitClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    { Private declarations }
    Bodies: TList;
  public
    { Public declarations }

  end;

var
  SkyForm: TSkyForm;

implementation

{$R *.dfm}
procedure TStar.Draw(Canvas: TCanvas);
begin
StandardDraw(Canvas, clYellow, 20);
end;

procedure TStar.GetXY(out GX, GY: double);
begin
GX:=X; GY:=Y;
end;

procedure TStar.Move(Canvas: TCanvas);
begin
Fx:=Fx+0; Fy:=Fy+0;
{Fx:=Fx+Fdx; Fy:=Fy+Fdy;}
end;

procedure TSatellite.GetXY(out X, Y: double);
var si,co: extended;
begin
ParentBody.GetXY(X,Y);
SinCos(Alpha, si, co);
X:=X+R*co; Y:=Y+R*si;
end;

procedure TSatellite.Move(Canvas: TCanvas);
//var X,Y: integer; XX, YY: double;
begin
Alpha:=Alpha+DAlpha;
end;

procedure TPlanet.Draw(Canvas: TCanvas);
begin
StandardDraw(Canvas, clGreen, 10);
end;

0

3

Вот третий

constructor TSputnic.Create(GR: double);
begin
inherited Create;
R:=GR;
end;

procedure TSputnic.Draw(Canvas: TCanvas);
begin
StandardDraw(Canvas, clBlue, 5);
end;
{ TBody }
procedure TBody.StandardDraw(Canvas: TCanvas; Color: TColor;
Radius: integer);
var X,Y: integer; XX,YY: double;
begin
with Canvas do
begin
Pen.Color:=clBlack; Pen.Width:=1;
Brush.Style:=bsSolid; Brush.Color:=Color;
GetXY(XX,YY);
X:=Round(XX); Y:=Round(YY);
ellipse (X-Radius, Y-Radius, X+Radius, Y+Radius);
end;
end;

procedure TSkyForm.ButtonExitClick(Sender: TObject);
begin
  close;
end;

procedure TSkyForm.FormCreate(Sender: TObject);
var Sun: TStar; TheEarth, Mars: TPlanet; Moon: TSputnic;
begin
Bodies:=TList.Create;
Sun:=TStar.Create;
Sun.Fx:=250; Sun.Fy:=200;
Bodies.Add(Sun);

TheEarth:=TPlanet.Create;
TheEarth.ParentBody:=Sun;
TheEarth.R:=90; TheEarth.DAlpha:=0.01;
Bodies.Add(TheEarth);

Moon:= TSputnic.Create(25);
Moon.ParentBody:=TheEarth;
Moon.DAlpha:=0.1;
Bodies.Add(Moon);

Mars:=TPlanet.Create;
Mars.ParentBody:=Sun;
Mars.R:=150; Mars.DAlpha:=0.03;
Bodies.Add(Mars);

end;

0

4

Код хороший но чтобы вам с ним разобраться нужно примерно месяца два поучиться программированию в ООП.

поэтому лучше напишите свой простенький код.

0


Вы здесь » Разработка проэктов » Другое » Код программы