51076

Створення власних обєктів для гри Мішень

Практическая работа

Информатика, кибернетика и программирование

Мета: Ознайомитись з основами обєктно – оріентованого програмування (ООП). Навчитись створювати власні обєкти успадковувати їх, перевизначати методи, створювати віртуальні функції.

Украинкский

2014-02-05

24.58 KB

4 чел.

Розробив

Олійник Д.А.

13.04.13

ДРПК.020180.015

Аркуш

Перевірив

Рудакова М.

1

Змін

Арк.

№ Докум

Підпис

Дата

Практична робота№7

Тема:Створення власних об’єктів для гри Мішень.

Мета: Ознайомитись з основами об’єктно – оріентованого програмування (ООП).

          Навчитись створювати власні об’єкти успадковувати їх, перевизначати  

          методи, створювати віртуальні функції.

Хід роботи:

unit Main;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, ExtCtrls;

type THitObj = record

x,y:integer;

dx,dy:integer;

end;

type

 TForm1 = class(TForm)

   Canv: TImage;

   procedure FormCreate(Sender: TObject);

   procedure FormPaint(Sender: TObject);

   procedure CanvMouseMove(Sender: TObject; Shift: TShiftState; X,

     Y: Integer);

   procedure FormDestroy(Sender: TObject);

   procedure CanvMouseDown(Sender: TObject; Button: TMouseButton;

     Shift: TShiftState; X, Y: Integer);

   procedure FormKeyDown(Sender: TObject; var Key: Word;

     Shift: TShiftState);

 private

   { Private declarations }

 public

   { Public declarations }

   procedure CreateHitObj(fx,fy:integer);

   procedure DelAll;

   function RectsOverlap(x,y,w,h,x1,y1:integer):boolean;

 end;

var

 Form1: TForm1;

 cx,cy:integer;

 Image1,Image2:TBitmap;

 HitObjects:array of THitObj; CHitObjects:integer=0;

 Points:integer=0;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

var

i:integer;

begin

Розробив

Олійник Д.А.

13.04.13

ДРПК.020180.015

Аркуш

Перевірив

Рудакова М.

2

Змін

Арк.

№ Докум

Підпис

Дата

ShowCursor(false);

Image1:=TBitmap.Create;

Image1.LoadFromFile('Image1.bmp');

Image1.TransparentColor:=clFuchsia;

Image1.Transparent:=true;

Image2:=TBitmap.Create;

Image2.LoadFromFile('Image2.bmp');

Image2.TransparentColor:=clFuchsia;

Image2.Transparent:=true;

randomize;

for i:=0 to 2 do

CreateHitObj(random(700),random(500));

end;

procedure TForm1.FormPaint(Sender: TObject);

var

i,x:integer;

begin

x:=x+1;

if x > 400 then for i:=0 to CHitObjects-1 do begin

HitObjects[i].x:=HitObjects[i].x+1;

HitObjects[i].y:=HitObjects[i].y+1;

if HitObjects[i].x > 800 then HitObjects[i].x:=0;

if HitObjects[i].y > 600 then HitObjects[i].y:=0;

end;

Canv.Canvas.Rectangle(0,0,800,600);

Canv.Canvas.TextOut(0,0,'Очки - '+IntToStr(Points));

for i:=0 to CHitObjects-1 do

Canv.Canvas.Draw(HitObjects[i].x,HitObjects[i].y,Image2);

Canv.Canvas.Draw(cx-25,cy-25,Image1);

end;

procedure TForm1.CanvMouseMove(Sender: TObject; Shift: TShiftState; X,

 Y: Integer);

begin

cx:=X;

cy:=y;

end;

procedure TForm1.CreateHitObj(fx, fy: integer);

begin

CHitObjects:=CHitObjects+1;

SetLength(HitObjects,CHitObjects);

HitObjects[CHitObjects-1].x:=fx;

HitObjects[CHitObjects-1].y:=fy;

end;

procedure TForm1.DelAll;

begin

CHitObjects:=0

SetLength(HitObjects,CHitObjects);

Розробив

Олійник Д.А.

13.04.13

ДРПК.020180.015

Аркуш

Перевірив

Рудакова М.

3

Змін

Арк.

№ Докум

Підпис

Дата

Image1.Free;

Image2.Free;

end;

procedure TForm1.FormDestroy(Sender: TObject);

begin

DelAll;

end;

function TForm1.RectsOverlap(x, y, w, h, x1, y1:integer): boolean;

begin

if (x1 >= x) and (x1 <= (x+w)) and (y1 >=y) and (y1 <= (y+h)) then

result:=true else result:=false;

end;

procedure TForm1.CanvMouseDown(Sender: TObject; Button: TMouseButton;

 Shift: TShiftState; X, Y: Integer);

 var

 i:integer;

begin

for i:=0 to CHitObjects do

if RectsOverlap(HitObjects[i].x,HitObjects[i].y,50,50,X,Y)

then begin Points:=Points+1; HitObjects[i].x:=20+random(760); HitObjects[i].y:=20+random(560); end;

end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

 Shift: TShiftState);

begin

if (key = VK_RETURN) and (CHitobjects < 10) then CreateHitObj(random(700),random(500));

end;

end.

Висновок: Я ознайомився з основами об’єктно- оріентованого програмування (ООП), та навчився створювати власні об’єкти успадковувати їх, перевизначати методи, створювати віртуальні функції.


 

А также другие работы, которые могут Вас заинтересовать

47282. Классификация и общая характеристика учреждений, предоставляющих социальные услуги 235 KB
  Предоставление социальных услуг без обеспечения проживания это предоставление услуг социального характера консультаций материальной помощи помощи беженцам и аналогичных услуг отдельным лицам и семьям на дому или в других местах. К учреждениям оказывающим социальные услуги без обеспечения проживания относятся комплексные центры социального обслуживания центры социального обслуживания семьи и детей центры социального обслуживания лиц без определенного места жительства и т. В центрах социального обслуживания населения и в отделах...
47283. Управление дебиторской задолженностью открытого акционерного общества «Коммунальные системы БАМа» 680.5 KB
  Сущность дебиторской задолженности Факторы влияющие на уровень дебиторской задолженности. Пути снижения дебиторской задолженности. Управление дебиторской задолженностью на примере ОАО Коммунальные Системы БАМа. Анализ дебиторской задолженности предприятия в целом.
47284. Цех подготовки фабрики газетной бумаги в г. Шклове 2.47 MB
  Определение крановых нагрузок В данном дипломном проекте выполнен расчет одной подкрановой балки расположенной по оси 1 расчётной рамы разрез 11 в пролете 14 которая идентична подкрановой балке по оси 4. Вариант 1 2 крана Используя правило Винклера устанавливаем два груза на балке и находим положение равнодействующей R относительно опоры А: мм Расстояние от критического груза до равнодействующей: С = 24 3 = 06 м По теореме Винклера устанавливаем колёса крана на балке таким образом чтобы расстояние от левой опоры до...
47287. Алгоритм пересчета балансов вершин выделенного пути и его особенности 76.6 KB
  После добавления нового элемента необходимо обновить коэффициенты сбалансированности родительских узлов Если любой родительский узел принял значение -2 или 2, то необходимо выполнить балансировку поддерева путем поворота
47288. Процедура построения почти полного дерева поиска и ее особенности 82.69 KB
  Бинарное дерево-это конечное множество элементов, которое либо пусто, либо содержит один элемент, называемый корнем дерева, а остальные элементы множества делятся на два непересекающихся подмножества, каждое из которых само является бинарным деревом.
47289. Туберкулез кожи. Лепра 249.5 KB
  Туберкулезные поражения кожи – группа клинически и морфологически различных заболеваний, обусловленных внедрением в кожу микобактерий туберкулеза (палочки Коха)