h1

Программа «Движущийся автомобиль»

Февраль 18, 2010

Лабораторная работа №2 по предмету компьютерная графика. Задание звучало так:

Создайте машину с вращающимися колесами (вид сбоку). Скорость изменяется (+\-).

При создании программы был использован компонент Timer, была реализована функция активности/неактивности кнопок, вместо динамического изменения скорости (+\-) реализовано статическое (с помощью RadioButton).

Ссылка на программу и файлы проекта

Исходный код:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, XPMan;

type
TForm1 = class(TForm)
Timer1: TTimer;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Timer2: TTimer;
GroupBox2: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
XPManifest1: TXPManifest;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
i,x,k:integer;
implementation

{$R *.dfm}

procedure koleso(p1,p2: integer);
begin
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Ellipse(p1,p2,p1+50,p2+50);
Canvas.MoveTo(p1+23,p2);
Canvas.LineTo(p1+23,p2+50);
Canvas.Ellipse(p1+10,p2+10,p1+40,p2+40);
end;
end;

procedure koleso1(p1,p2: integer);
begin
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Ellipse(p1,p2,p1+50,p2+50);
Canvas.MoveTo(p1+23,p2);
Canvas.LineTo(p1+23,p2+50);
Canvas.Ellipse(p1+10,p2+10,p1+40,p2+40);
end;
end;

procedure koleso2(p1,p2: integer);
begin
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Ellipse(p1,p2,p1+50,p2+50);
Canvas.MoveTo(p1+40,p2+5);
Canvas.LineTo(p1+10,p2+45);
Canvas.Ellipse(p1+10,p2+10,p1+40,p2+40);
end;
end;

procedure koleso3(p1,p2: integer);
begin
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Ellipse(p1,p2,p1+50,p2+50);
Canvas.MoveTo(p1,p2+24);
Canvas.LineTo(p1+50,p2+24);
Canvas.Ellipse(p1+10,p2+10,p1+40,p2+40);
end;
end;

procedure koleso4(p1,p2: integer);
begin
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Ellipse(p1,p2,p1+50,p2+50);
Canvas.MoveTo(p1+5,p2+12);
Canvas.LineTo(p1+45,p2+40);
Canvas.Ellipse(p1+10,p2+10,p1+40,p2+40);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
If RadioButton1.Checked=true then Timer1.Interval:=300;
If RadioButton2.Checked=true then Timer1.Interval:=100;
If RadioButton3.Checked=true then Timer1.Interval:=50;
If RadioButton4.Checked=true then Timer1.Interval:=20;
i:=i+1;
If i>4 then i:=1;
If i=1 then
begin
koleso1(130,190);
koleso3(460,190);
end;

If i=2 then
begin
koleso2(130,190);
koleso4(460,190);
end;

If i=3 then
begin
koleso3(130,190);
koleso1(460,190);
end;

If i=4 then
begin
koleso4(130,190);
koleso2(460,190);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled:=false;
Button2.Enabled:=true;
Button3.Enabled:=false;
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.MoveTo(200,100);
Canvas.LineTo(400,100);
Canvas.LineTo(470,160);
Canvas.LineTo(470,160);
Canvas.LineTo(550,160);
Canvas.LineTo(550,210);
Canvas.LineTo(100,210);
Canvas.LineTo(100,160);
Canvas.LineTo(150,160);
Canvas.LineTo(200,100);
Canvas.MoveTo(150,160);
Canvas.LineTo(470,160);
Canvas.MoveTo(200,100);
Canvas.LineTo(200,210);
Canvas.MoveTo(300,100);
Canvas.LineTo(300,210);
Canvas.MoveTo(400,100);
Canvas.LineTo(400,210);
Canvas.Ellipse(130,190,180,240);
Canvas.MoveTo(153,190);
Canvas.LineTo(153,240);
Canvas.Ellipse(140,200,170,230);
Canvas.Ellipse(460,190,510,240);
Canvas.MoveTo(460,214);
Canvas.LineTo(510,214);
Canvas.Ellipse(470,200,500,230);
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer2.Enabled:=true;
Button1.Enabled:=false;
Button2.Enabled:=false;
Button3.Enabled:=true;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
timer1.enabled:=not timer1.enabled;
Button3.Enabled:=false;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
k:=k+1;
If k=1 then Label1.Caption:=’Брррррррррррррррррр……’;
If k=2 then Label1.Caption:=Label1.Caption+#13+’Чх-пых-пых-пых-пыщ…..’+#13;
If k=3 then Label1.Caption:=Label1.Caption+’Быжжжжжжжжжьь……’;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RadioButton1.Checked:=true;
Button2.Enabled:=false;
Button3.Enabled:=false;
end;

procedure TForm1.RadioButton1Click(Sender: TObject);
begin

end;

end.

Advertisements

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: