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.

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


 

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

1149. Выявление особенностей финансово-экономического развития ЗАО Аргументы и факты 348 KB
  Общая информация об организации и анализ внутренней среды ЗАО Аргументы и факты. Анализ внешней макросреды. Конъюнктура рынка. Анализ финансово-экономического положения ЗАО Аргументы и факты Анализ внешнего микроокружения ЗАО Аргументы и факты
1150. Табулирование трансцендентных функций 460 KB
  Изучение и сравнение различных способов приближенного вычисления заданной функции. Вычисление погрешности интерполирования. Корни полинома Чебышева. Построение графиков погрешностей. Вычисление интегралов с помощью формулы трапеций.
1151. Субмаринная разрузка пресных подземных вод 285 KB
  Технические средства системы поиска субмаринных источников. Технические средства системы управления волновой энергоустановки. Описание алгоритма поиска субмаринных источников. Волнонасос поршневого типа. Гидротурбина с радиально-осевым приводом.
1152. Преобразование Хартли и Габора, косинусное преобразование 74 KB
  Непрерывное и дискретное преобразование Хартли. Непрерывное преобразование Габора. Непрерывное и дискретное косинусное преобразование.
1153. Расчёт смесительного каскада 249.5 KB
  Найдем частоту гетеродина и расположим частоты каналов приёма в линейном режиме преобразования частоты и, соблюдая масштаб, сделаем график спектра. Проходная ВАХ транзистора КТ321В. Рассчитаем значения амплитуды первой гармоники тока коллектора. Методом пяти точек вычисляют шумовые параметры транзистора в смесительном режиме.
1154. Изучение основных принципов языка Delphi и C++ 436.5 KB
  Разработка приложений с графическим интерфейсом пользователя. Изучение принципов процедурного программирования. Сравнение языков С++ и Delphi. Объявление класса и инкапсуляция, наследование. Графическая среда Delphi. Сравнение графических оболочек и текстовых редакторов Visual Studio и Delphi 7.
1155. Основы электроники 1.27 MB
  Изучением физических принципов функционирования электронных элементов. Изучением принципов построения, особенностью действия, основ характеристик электронных устройств и систем. Теоретическим и экспериментальным исследованием элементов, устройств и систем.
1156. Отношение молодежи к Великой Отечественной Войне 2.01 MB
  Исследовательская. Отношение молодежи к Великой Отечественной Войне по Москве. Социологическое исследование среди молодежи города Зеленограда с целью выявления отношения и уровня знаний молодежи о Великой Отечественной Войне.
1157. Программирование приложений для WINDOWS с использованием функций WinAPI 114.5 KB
  Программирование на С++. Общие положения программирования в среде Windows. Создание приложений Windows с использованием OWL. Отличительные особенности Borland C++. Общие положения создания и обработки окон приложений. Решение проблемы корректного вывода.