Спецификация программы

 

Исполняемый Файл программы «игра «Сбей самолет»» имеет название flight.exe и расположен на диске А: в каталоге курсовая. Состав проекта приведен в таблице 1.

 

Таблица 1. Состав проекта

Наименование Обозначение Примечание
flight.dpr Файл проекта Связывает все файлы проекта
flight.res Файл ресурсов Содержит пиктограммы, графические изображения
Unit1.dfm Файл формы №1 Содержит список свойств всех компонентов, включенных в форму №1.
Unit1.pas Файл программного модуля для формы №1 Определяет функциональность формы №1

 



Текст программы

 

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, StdCtrls, Buttons;

 

type

TForm1 = class(TForm)

Timer1: TTimer;

Panel1: TPanel;

StatusBar1: TStatusBar;

ProgressBar1: TProgressBar;

ProgressBar2: TProgressBar;

procedure FormPaint(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormKeyPress (Sender: TObject; var Key: Char);

procedure FormKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);

 

Private

back: TBitmap; // фон

plane, plane2: TBitmap; // Самолеты

rocket: TBitmap;// Пушка

bomb: Tbitmap; // Ракета

x,y, x1, y1, x2,y2, x3, y3: integer; // координаты объектов

n, m: integer; // Количество выстрелов и попаданий

Public

{Public declarations}

end;

 

var

Form1: TForm1;

 

implementation

{$R *.dfm}

// конструктор

procedure TForm1.FormCreate(Sender: TObject);

begin

try

back:= TBitmap.Create;

back.LoadFromFile('graphics\sky.bmp');

// установить размер формы в соответствии

с размером фонового рисунка

Form1.ClientWidth:= back.Width;

Form1.ClientHeight:= back.Height + 50;

 

plane:= TBitmap.Create;

plane.LoadFromFile('graphics\plane.bmp');

plane.Transparent:= True;

 

plane2:= TBitmap.Create;

plane2.LoadFromFile('graphics\plane2.bmp');

plane2.Transparent:= True;

 

rocket:= TBitmap.Create;

rocket.LoadFromFile('graphics\turel.bmp');

rocket.Transparent:= true;

bomb:= TBitmap.Create;

bomb.LoadFromFile ('graphics\bomb.bmp');

bomb.Transparent:= true;

 

StatusBar1.Panels[0].Text:= 'Количество выстрелов: ' + inttostr(n);

StatusBar1.Panels[1].Text:= 'Количество попаданий: ' + inttostr(m);

 

// исходное положение объектов

x:= -30;

y:= 50;

x1:= 150;

y1:= 190;

x2:= x1;

y2:= -15;

x3:= -40;

y3:= 40;

 

Timer1.Interval:= 25;

finally

end;

end;

 

// Нажатие клавиш

procedure TForm1.FormKeyPress (Sender: TObject; var Key: Char);

begin

if (key = ' ') and (y2 = -15) then

begin

x2:= x1 + 8;

y2:= clientheight - 80;

n:= n + 1;

StatusBar1.Panels[0].Text:= 'Количество выстрелов: ' + inttostr(n);

ProgressBar1.StepIt;

end;

end;

 

procedure Tform1.FormKeyDown(sender: Tobject; var Key: Word; shift: TshiftState);

begin

case key of

VK_LEFT: x1:= x1 - 3;

VK_RIGHT: x1:= x1 + 3;

end;

end;

 

// сигнал от таймера

procedure TForm1.Timer1Timer(Sender: TObject);

var

r, r1, r2, r3: TRect; // области, в которых находятся объекты

begin

randomize;

r:= Rect(x, y, x+plane.Width, y+plane.Height);

Canvas.CopyRect(r, back.Canvas, r); // стереть объект (восстановить фон)

r1:= Rect (x1,y1,x1+rocket.Width,y1+rocket.Height);

Canvas.CopyRect(r1,back.Canvas,r1);

r3:= Rect(x3,y3,x3+plane2.Width,y3+plane2.Height);

Canvas.CopyRect(r3,back.Canvas,r3);

 

If y2 > -15 then

begin

y2:= y2 - 2;

r2:= Rect (x2,y2, x2+bomb.Width,y2+bomb.Height);

Canvas.CopyRect(r2,back.Canvas,r2);

end

else y2:= - 15; // Снаряд долетел до верхней границы окна

 

x:= x + 2;

x3:= x3 + 3;

 

// Сравнить координаты ракеты и самолетов

if (x > x2 -10) and (x < x2 +10) and

(y < y2 + 10) and (y > y2 - 10) then

begin

x:= -30;

y2:= -15;

m:= m + 1;

StatusBar1.Panels[1].Text:= 'Количество попаданий: ' + inttostr(m);

y:= 50 + random(80);

ProgressBar2.StepIt;

exit;

end;

 

if (x3 > x2 -10) and (x3 < x2 +10) and

(y3 < y2 + 10) and (y3 > y2 - 10) then

begin

x3:= -30;

y2:= -15;

m:= m + 1;

StatusBar1.Panels[1].Text:= 'Количество попаданий: ' + inttostr(m);

y3:= 60 + random(80);

ProgressBar2.StepIt;

exit;

end;

 

// Сравнить количество выстрелов и попаданий с необходимой нормой для завершения игры

if m > 15 then

begin

timer1.Enabled:= false;

ShowMessage ('Вы Выиграли!!!!');

n:= 0;

m:= 0;

y2:= -15;

progressbar1.Position:= 20;

progressbar2.Position:= 0;

StatusBar1.Panels[1].Text:= 'Количество попаданий: ' + inttostr(m);

StatusBar1.Panels[0].Text:= 'Количество выстрелов: ' + inttostr(n);

timer1.Enabled:= true;

end;

if n > 20 then

begin

timer1.Enabled:= false;

ShowMessage ('Вы проиграли!!!');

n:= 0;

m:= 0;

y2:= -15;

progressbar1.Position:= 20;

progressbar2.Position:= 0;

StatusBar1.Panels[1].Text:= 'Количество попаданий: ' + inttostr(m);

StatusBar1.Panels[0].Text:= 'Количество выстрелов: ' + inttostr(n);

timer1.Enabled:= true;

end;

 

// не пустить пушку за границы формы

if x1 < 0 then x1:= 0;

if x1 > form1.width - rocket.Width then x1:= form1.Width - rocket.Width;

 

Canvas.Draw(x,y,plane);

Canvas.Draw(x1,y1,rocket);

Canvas.Draw(x2,y2,bomb);

Canvas.Draw(x3,y3,plane2);

 

if x > Form1.Width + plane.Width + 10 then

x:= -20;

if x3 > Form1.Width + plane2.Width + 10 then

x3:= -20;

 

end;

 

procedure TForm1.FormPaint(Sender: TObject);

begin

Canvas.Draw(0,0,back);

Canvas.Draw(x,y,plane);

Canvas.Draw(x3,y3,plane2);

Canvas.Draw(x1,y1,rocket);

Canvas.Draw(x2,y2,bomb);

end;

end.



Описание программы

Общие сведения

 

Программа «Сбей самолет» имеет наименование flight.exe, и представляет собой компьютерную игру. Пользователю предоставляется возможность сбить самолеты, появляющиеся на экране, и летящие с разной скоростью.

Приложение, созданное в Delphi, будет работать на другом компьютере только в том случае, если на этом компьютере есть необходимые для его работы динамические библиотеки. Таким образом, помимо EXE-файла на компьютер пользователя надо перенести динамические библиотеки, необходимые программе, как минимум, так называемую библиотеку времени выполнения (Runtime Library, файл rtl100.bpl) и библиотеку визуальных компонентов (Visual Components Library, файл vcl100.bpl). Библиотеки, используемые программой, должны находиться в том же каталоге, что и EXE-файл. Однако весь необходимый для работы программы код можно включить непосредственно в EXE-файл (в этом случае динамические библиотеки можно не устанавливать на компьютер пользователя), что и сделано в данной программе.

Программа «Сбей самолет» написана на языке высокого уровня Delphi. Среда Borland Delphi является одним из популярнейших средств разработки прикладных программ (приложений). Она ориентирована на так называемую «Быструю» разработку, в основе которой лежит технология визуального проектирования и событийного программирования. Суть этой технологии, которую иногда называют «компонентной», в том, что среда разработки берет на себя большую часть рутины, оставляя программисту работу по конструированию окон и созданию функций обработки событий.

 




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: