на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Написание компьютерной игры "Сбей самолет"
p align="left">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.

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

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

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

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

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

4.2 Функциональное назначение

Программа «Сбей самолет» представляет собой игру, и предназначена для проведения досуга, развлечения играющего. Для правильного функционирования программы необходимо, чтобы компьютер имел процессор с тактовой частотой не менее 600 МГц. Оперативной памяти не менее 512 Мб. Свободного места на жестком диске не менее 600 Мб. Управление игрой производится с клавиатуры, путем нажатия клавиш перемещения курсора для сдвига пушки, и пробел для выстрела. А так же мышь, для ответа на диалоговые сообщения, которые появляются при окончании игрового процесса.

4.3. Описание логической структуры

В программе главную задачу выполняет мультипликация. Она позволяет реализовать движение всех объектов, используемых в программе.

Чтобы воспроизвести движение объекта, необходимо сначала вывести объект на фоне, затем через некоторое время стереть этот объект, вывести фон, чтобы восстановить «испорченную» область, и снова вывести объект, но уже с небольшим отклонением от первоначального положения.

После загрузки битового образа из файла он находится в программе в определенной области памяти. Чтобы определить положение объекта на форме, необходимо переменной объекта присвоить значение типа TRect, а затем вывести объект с нужными координатами на форму.

Например:

r: TRect;

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

После чего можно вывести объект, стереть его, и снова вывести:

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

Так как с каждым сигналом от таймера значение переменных меняется, то изображение каждый раз будет выводиться с определенным смещением. У наблюдателя возникнет ощущение непрерывного движения.

Для реализации движения самолетов и ракеты движение происходит в строго определенную сторону, путем прибавления к координате Х для самолетов и к координате У для ракеты определенного им числа. Для реализации движения пушки в обе возможные стороны, ее координата Х должна меняться в соответствии с нажатиями клавиш. Для этого нужно в обработке события при нажатии клавиш перемещения курсора влево или вправо прибавить к координате Х пушки или отнять от нее определенное число соответственно.

Например:

procedure Тform1.FormKeyDown(sender: Тobject; var Key: Word; shift: tshiftstate);

begin

case key of

VK_LEFT : x1 := x1 - 3;

VK_RIGHT : x1 := x1 + 3;

end;

end;

Таким образом, координата Х пушки меняется, и процедура мультипликации рисует ее со смещением.

Для того чтобы произвести пуск ракеты строго из центра пушки, необходимо координате Х ракеты присвоить значение координаты центра пушки (Координате Х пушки, прибавить 8). А координате У ракеты установить значение чуть меньше ширины формы, и затем с каждым сигналом от таймера прибавлять к этой координате определенное ей число. Таким образом, ракета будет смещаться вверх.

Например:

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;

Чтобы определить попадание ракеты в самолет, необходимо сравнить координаты ракеты, и координаты самолета. Если они совпадают, стереть самолет и ракету, присвоить координате У ракеты значение минус 15, таким образом, программа будет знать, что можно пустить следующую ракету, присвоить переменной счетчика попаданий +1, и пустить самолет сначала. Например:

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;

Здесь Х это координата самолета, а Х2 - ракеты.

Чтобы завершить программу, координаты попаданий или выстрелов должны достигнуть своего максимально-допустимого значения. Чтобы проверить это, нужно сравнить текущие значения переменных с номиналом. И если они будут равны, выдать сообщение о выигрыше или проигрыше соответственно, и затем обнулить в программе все счетчики.

Например:

if m = 16 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.

4.4 Используемые технические средства

Программа, созданная на Delphi, будет правильно функционировать с теми системными требованиями, с которыми может функционировать и сам язык программирования. Поэтому в качестве системных требований для программы будем иметь минимальные системные требования для самого Delphi.

Для правильного функционирования программы необходимо иметь процессор Pentium III или аналогичный AMD c тактовой частотой не менее 600 МГц; оперативную память не менее 512 Мб; свободного пространства на жестком диске не менее 600 Мб; операционную систему Windows 9x, 2000, XP или Vista; клавиатура, мышь.

4.5 Вызов и загрузка

Для того чтобы запустить программу, необходимо найти, и запустить файл “flight.exe” на диске A в каталоге «Курсовая». После загрузки программы в оперативную память, на экране отобразится окно программы (см. Приложение1).

4.6 Входные данные

Программа, для своей работы осуществляет загрузку битовых образов из графических файлов формата bmp. Данные файлы находятся на диске А в каталоге «graphics».

4.7. Выходные данные

Пользователь наблюдает на экране монитора летящие самолеты, пытается их сбить. В итоге получает информационное сообщение о выигрыше или проигрыше.

5 Тестирование программы

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

Тестирование является основным методом отладки, измерения качества и определения реальных характеристик программ и информации баз данных на любых этапах их жизненного цикла.

Цель тестирования и отладки - обнаружение, локализация и устранение дефектов в программах и данных.

Тестирование программы проходило на компьютере, с установленной на него ОС Windows XP. Было проведено 5 запусков игры, с конечными результатами как в пользу игрока, так и в пользу компьютера. Все правила игры и условия в данной программе выполняются. Действия игрока и компьютера находятся в рамках правил.

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

ВНЕДРЕНИЕ

1. Условия выполнения программы

Для выполнения программы требуется минимум:

Pentium III и выше;

Объем оперативной памяти не менее 512 Мб;

Жесткий диск не менее 600 Мб;

2. Выполнение программы

Запуск «flight.exe»- > по экрану начинают лететь самолетики, до момента, когда количество выстрелов и ли попаданий не будет больше нормы.

3. Сообщение оператору

«Вы выиграли» - игра начинается сначала;

«Вы проиграли» - игра начинается снова (см. Приложение 3) .

ЗАКЛЮЧЕНИЕ

В ходе выполнения данной курсовой работы на основе различных источников данных была проанализирована заданная предметная область.

В процессе кодирования была изучена RAD Delphi в части пользовательского интерфейса и технологий отображения графики.

В результате выполнения проекта была полностью реализована игра «Сбей самолет», однако в приложение можно добавить озвучивание событий игры, уровень сложности игры и разные настройки параметров игры. Это вызвало бы больший интерес к игре. Приложение представляет собой очень простой вариант игры «Сбей самолет».

В процессе тестирования приложения ошибок не обнаружено.

ГЛОССАРИЙ

п/п

Новое понятие

Содержание

1

2

3

1

Компонент

Функциональный элемент, имеющий определенные свойства и размещаемый программистом в окне формы

2

Форма

Окно приложения на этапе разработки

3

Проект

Совокупность файлов, обеспечивающих разработку приложения в Delphi

4

Файл проекта

Автоматически создаваемый файл, связывающий вместе все файлы приложения и содержащий код инициализации

5

Файл ресурсов

Двоичный файл, содержащий все необходимые для проекта ресурсы, такие как, например, пиктограммы, графические изображения, курсоры мыши или строки

6

Файл формы

Файл, содержащий список всех свойств компонентов, включенных в форму, значения которых были изменены по сравнению со значениями, заданными по умолчанию

7

Файл программного модуля

Файл, содержащий описание связанной с модулем формы, процедур и функций программной логики функционирования окна приложения в синтаксисе Object Pascal

8

Свойство

Специальный механизм классов, регулирующий доступ к полям

9

Событие

Свойство процедурного типа, предназначенное для создания пользовательской реакции на то или иное входное воздействие

10

Обработчик события

Фрагмент программы, который выполняется в ответ на определенное изменение в программе или Windows

ЛИТЕРАТУРА

1. Фаронов В. В. Delphi 4: Учебный курс. - М.: Издательство “Нолидж”, 1998.

2. Дарахвелидзе П., Марков Е. Программирование в Delphi 4. - СПб.: БХВ - Санкт-Петербург, 1999.

3. Культин Н.Б. Основы программирования в Turbo Delphi. - СПб.: БХВ - Петербург, 2007.

4. Культин Н.Б. Delphi в задачах и примерах. - СПб.: БХВ - Петербург, 2003.

5. Вирт. Н. Алгоритмы и структуры данных: Пер. с англ. - М.: Мир, 1989.

6. Фокс Дж. Программное обеспечение и его разработка: Пер. с англ. - М.: Мир, 1985.

7. Роб Баас, Майк Фервай, Хайдемария Гюнтер. Delphi 4. Полное руководство. - К.: Издательская группа BHV, 1999.

8. Архангельский А. Я. Delphi5. - М., ЗАО «Издательство «Бином», 2001.

Приложение 1

Приложение 2

Приложение 3

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.