Исполняемый Файл программы «игра «Сбей самолет»» имеет название 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 является одним из популярнейших средств разработки прикладных программ (приложений). Она ориентирована на так называемую «Быструю» разработку, в основе которой лежит технология визуального проектирования и событийного программирования. Суть этой технологии, которую иногда называют «компонентной», в том, что среда разработки берет на себя большую часть рутины, оставляя программисту работу по конструированию окон и созданию функций обработки событий.