Разработка игры "Сбей самолет"
Особенность создания первых примитивных компьютерных игр. Главная характеристика и параметры таймера. Использование среды визуального программирования Delphi для разработки приложения. Основной анализ описания алгоритма решения и логической структуры.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 16.03.2015 |
Размер файла | 949,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
4
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ЗАПОРОЖСКИЙ ИНСТИТУТ ЭКОНОМИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Факультет компьютерной инженерии
Кафедра компьютерных систем
КУРСОВАЯ РАБОТА
по дисциплине «Программирование и алгоритмические языки»
Тема: «Разработать игру “Сбей самолет”»
Выполнил:ст. гр. ОКСиС-111
Курбатов Андрей Алексеевич
Руководитель Ширяева Ирина
Владимировна
Керчь 2013
Реферат
Разработайте программу, моделирующую игру “Сбей самолет”. По экрану летят вражеские самолеты. Цель играющего - сбить их. Пусковая установка находится в нижней строке экрана. Пусковую установку можно перемещать по строке вперед и назад.
Курсовой проект содержит 28 страниц, 7 иллюстраций, 8 приложений. В данном задании необходимо разработать развлекательную программу, представляющую собой игру. Область применения: досуг программиста.
В результате работы была получена программа симулирующая игру “Сбей самолет”.
ДОСУГ ПРОГРАММИСТА, ПУСКОВАЯ УСТАНОВКА, САМОЛЕТЫ, СИМУЛЯТОР, ТАЙМЕР.
Содержание
Введение
1. Характеристика таймера
2. Разработка рабочего проекта
2.1 Разработка алгоритма решения
2.2 Описание логической структуры
Выводы
Список используемой литературы
Приложения
Введение
Компьютерная игра -- компьютерная программа, служащая для организации игрового процесса, связи с партнёрами по игре, или сама выступающая в качестве партнёра.
Компьютерные игры часто создаются на основе фильмов и книг; есть и обратные случаи. С 2011 года компьютерные игры официально признаны в США отдельным видом искусства. Компьютерные игры оказали столь существенное влияние на общество, что в информационных технологиях отмечена устойчивая тенденция к геймификации для неигрового прикладного программного обеспечения.
Первые примитивные компьютерные игры были разработаны в 1950-х и 1960-х годах. Они работали на таких платформах, как университетские мейнфреймы и компьютеры EDSAC.
В 1952 году появилась программа «OXO», имитирующая игру «крестики-нолики», созданная А. С. Дугласом как часть его докторской диссертации в Кембриджском Университете. Игра работала на большом университетском компьютере, известном как EDSAC(Electronic Delay Storage Automatic Calculator).
В 1958 году Уильям Хигинботам, помогавший строить первую ядерную бомбу в Брукхейвенской национальной лаборатории, для развлечения посетителей создал «Tennis for Two», (Теннис для двоих).
В 1962 году Стив Рассел (англ.)русск. разработал игру «Spacewar!» для миникомпьютера PDP-1 в Массачусетском технологическом институте, которая быстро распространилась по всем университетам США[5].
В 1969 году Ральф Баер, который позже стал известен как «Король видеоигр», запросил патент на раннюю версию игровой консоли «Television Gaming and Training Apparatus». В 1967 году Баер создал игру пинг-понг, похожую на «Теннис для двоих». Вместе с Magnavox он работал над созданием первой консоли, названной Magnavox Odyssey в 1972 году.
Разработка игровых автоматов в 1970-х годах привела к так называемому «Золотому веку аркад». Одна из самых известных игр того времени -- «Pong».
1. Характеристика таймера
Таймер (от англ. Timer) -- в информатике средство обеспечения задержек и измерения времени средствами компьютера.
Главной характеристикой таймера является его точность -- минимальный гарантированно выдерживаемый интервал времени. По этому параметру таймеры делят на:
1. Малоточные (ошибка измерения может достигать 0,1 с)
2. Точные (ошибка измерения не превышает 0,001 с)
3. Сверхточные (ошибка измерения не превышает 10?6 c)
Существуют два вида таймеров:
1. Аппаратные таймеры функционируют независимо от центрального процессора и в момент срабатывания генерируют прерывание.
2. Программные таймеры реализуются за счёт выполнения в цикле заданного количества одинаковых «пустых» операций. При фиксированной частоте работы процессора это позволяет точно определять прошедшее время. Главными минусами такого метода являются: зависимость количества итераций цикла от типа и частоты процессора, невозможность выполнения других операций во время задержки.
2. Разработка рабочего проекта
Для разработки приложения игры «Сбей самолет» используется среда визуального программирования Delphi. Проект программы содержит одно окно(Приложение 2).
Что бы реализовать движение самолета необходимо присвоить его какой-то координате, затем через некоторое время передвинуть изображение на несколько пикселей.
В данной программе самолеты расположены за границей окна и после запуска игры вылетают из-за нее. Таким образом, складывается впечатление, что самолет вылетает из-за границы окна и движется в заданном направлении. Как только самолет залетает за противоположную границу окна, изображению задается первоначальная координата и движение начинается сначала.
Основную работу выполняет процедура обработки событий Timer, которая передвигает картинку с определенной скоростью (интервалом). Запуск ракеты и управления танком обеспечивает процедура обработки события KeyDown (это событие генерируется до тех пор, пока пользователь удерживает клавишу). Процедура, в зависимости от того, какую клавишу удерживает игрок, задает направление перемещения установки.
2.1 Разработка алгоритма решения
В программе решается одна независимая подзадача: Мультипликация.
Алгоритм мультипликации самолета представлен на рис.5:
Размещено на http://www.allbest.ru/
4
Рис.1. Схема алгоритма мультипликации
Программа выполняется следующим образом: Сначала на форму выводятся объекты - летящие самолеты (приложение 3), и пушка (приложение 4). Игрок запускает ракету (приложение 5), которая может сбить или не сбить самолет. За один раз можно пустить только одну ракету. Если ракета попадает в самолет, то стирается самолет и ракета, увеличивается счетчик сбитых самолетов, счетчик ракет не изменяется, самолет начинает «полет» снова, а игрок получает право пустить следующую ракету. Если игрок не попал в самолет, ракета долетает до верхней границы окна, счетчик ракет уменьшается на 1, и игрок получает право пустить следующую ракету. Если счетчик ракет достигает (0) то программа выводит сообщение о том сколько самолетов сбито. После нажатия на кнопку «Об» программа завершает свое выполнение. Также во время игры игрок может поставить игру на паузу нажав кнопку «р.». После нажатия все таймеры прекращают свое выполнение. Для восстановления игры потребуется нажать на кнопку «о». После нажатия этой кнопки самолеты продолжают свое выполнение. Возможно также запустить игру с начала, если нажать кнопку «I». Все счетчики сбрасываются, а таймеры начинают снова свое выполнение.
2.2 Описание логической структуры
В программе главную роль выполняет мультипликация. Она позволяет реализовать движение самолетов.
Что бы реализовать движение самолета, необходимо создать цикл или таймер в котором текущей координате изображения присвоить координаты изображения со сдвигом.
Так с каждым сигналом таймера положение изображения будет меняться и у наблюдателя возникнет ощущение непрерывного движения. Пример:sam1.left:=sam1.left+(n);
Для реализации движения пушки в обе возможные стороны, ее координаты по горизонту должны меняться в соответствии с нажатой клавишей. компьютерный таймер визуальный игра
Что бы определить попала ли ракета в самолет, необходимо сравнить координаты самолета и ракеты. Если они совпадают то переместить ракету в исходное положение, а самолет за форму. Количество сбитых самолетов увеличивается. Если же ракета не попадает то самолет продолжает свое движение, а ракета присваивается начальной координате. Кол-во оставшихся ракет уменьшается.
Пример:
raketa.top:=raketa.top-20;
if raketa.top<0 then
begin
j:=j-1;
timer2.Enabled:=false;
raketa.left:=tank.left+50;
raketa.top:=tank.top+70;
Что бы завершить программу, кол-во оставшихся ракет должно достигнуть своего предела (0).
Пример:
if raketa.top<0 then
begin
j:=j-1;
Где j-это кол-во оставшихся ракет.
Выводы
В ходе выполнения данной курсовой работы на основе различных источников данных была проанализирована заданная предметная область.
В процессе кодирования была изучена RAD Delphi в части пользовательского интерфейса и технологий отображения графики.
В результате выполнения проекта была полностью реализована игра «Сбей самолет», однако в приложение можно добавить озвучивание событий игры, уровень сложности игры и разные настройки параметров игры. Это вызвало бы больший интерес к игре. Приложение представляет собой очень простой вариант игры «Сбей самолет».
В процессе тестирования приложения ошибок не обнаружено.
Список используемой литературы
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
Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
samolet1: TTimer;
tank: TImage;
sam1: TImage;
raketa: TImage;
timer2: TTimer;
label1: TLabel;
fon: TImage;
Timer3: TTimer;
sam2: TImage;
Timer4: TTimer;
sam3: TImage;
label2: TLabel;
sam4: TImage;
Timer5: TTimer;
boom: TImage;
boom2: TImage;
boom3: TImage;
boom4: TImage;
Label3: TLabel;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure samolet1Timer(Sender: TObject);
procedure timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer5Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,j,n:integer;
implementation
{$R *.dfm}
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; //движение танка
Shift: TShiftState);
begin
DoubleBuffered := True;
if (key=VK_left) and (tank.left>=0) then
tank.left:=tank.left-20;
if (key=VK_right) and (tank.left + tank.width <= Form1.Clientwidth)then
tank.left:=tank.left+20;
if key=vk_space then
timer2.enabled:=true;
if key=$49 then
begin
i:=0;
j:=10;
sam1.Left:=-1000;
sam2.Left:=-1000;
sam3.left:=+1000;
sam4 .Left:=+700;
label1.caption:='Самолетов уничтожено:'+inttostr(i); //вывод сбитых самолетов
label2.Caption:='Ракет осталось:'+inttostr(j); //вывод оставшихся ракет
end;
if key=$50 then //пауза кнопкой "p"
begin
samolet1.Enabled:=false;
timer2.Enabled:=false;
timer3.Enabled:=false;
timer4.Enabled:=false;
timer5.Enabled:=false;
end;
if key=$4F then //возобновить игру кнопкой "о"
begin
samolet1.Enabled:=true;
timer3.Enabled:=true;
timer4.Enabled:=true;
timer5.Enabled:=true ;
end;
if timer2.enabled=false then //ракета движеться вместе с танком
begin
if (key=vk_left) then raketa.top:=tank.top+70;
if (key=vk_left) then raketa.left:=tank.left+50;
if (key=vk_right) then raketa.top:=tank.top+70;
if (key=vk_right) then raketa.left:=tank.left+50;
end;
end;
procedure TForm1.samolet1Timer(Sender: TObject); //самолет 1
begin
sam1.left:=sam1.left+(n);
if sam1.Left > Form1.Clientwidth then
begin
sam1.Left:=form1.Width-1000
end;
if sam1.left>(-500) then
boom.visible:=false;
end;
procedure TForm1.Timer3Timer(Sender: TObject); //самолет 2
begin
sam2.left:=sam2.left+(n);
if sam2.Left > Form1.Clientwidth then
begin
sam2.Left:=form1.Width-1500
end;
if sam2.left >(-500) then
boom2.visible:=false;
end;
procedure TForm1.Timer4Timer(Sender: TObject); //самолет 3
begin
sam3.left:=sam3.left-(n);
if sam3.Left < (-100) then
begin sam3.Left:=sam3.Left+1000
end;
if sam3.left<700 then
boom3.visible:=false;
end;
procedure TForm1.Timer5Timer(Sender: TObject); //самолет 4
begin
sam4.left:=sam4.left-(n);
if sam4.Left < (-100) then
begin sam4.Left:=sam4.Left+700
end;
if sam4.left<500 then
boom4.visible:=false;
end;
procedure TForm1.timer2Timer(Sender: TObject); //ракета
begin
raketa.top:=raketa.top-20;
if raketa.top<0 then //если ракета достигает края формы то возвращаеться
begin
j:=j-1;
timer2.Enabled:=false;
raketa.left:=tank.left+50;
raketa.top:=tank.top+70;
end;
if ((raketa.Top > sam1.Top) and //если координаты 1 самолета и ракеты равны
(raketa.Top < sam1.Top+ sam1.height)
and
(raketa.left > sam1.left) and
(raketa.left < sam1.left+sam1.Width))
then
begin
timer2.Enabled:=false; ////////////////////////
raketa.left:=tank.left+50;
raketa.top:=tank.top+70;
boom.Left:=sam1.Left;
boom.Visible:=true;
sam1.Left:=sam1.left-1000;
i:=i+1;
end;
if ((raketa.Top > sam2.Top) and //если координаты 2 самолета и ракеты равны
(raketa.Top < sam2.Top+ sam2.height)
and
(raketa.left > sam2.left) and
(raketa.left < sam2.left+sam2.Width))
then
begin
timer2.Enabled:=false;
raketa.left:=tank.left+50;
raketa.top:=tank.top+70;
boom2.Left:=sam2.Left;
boom2.Visible:=true;
sam2.left:=-1000;
i:=i+1;
end;
if ((raketa.Top > sam3.Top) and //если координаты 3 самолета и ракеты равны
(raketa.Top < sam3.Top+ sam3.height)
and
(raketa.left > sam3.left) and
(raketa.left < sam3.left+sam3.Width))
then
begin
timer2.Enabled:=false;
raketa.left:=tank.left+50;
raketa.top:=tank.top+70;
boom3.Left:=sam3.Left;
boom3.Visible:=true;
sam3.left:=+1000;
i:=i+1;
end;
if ((raketa.Top > sam4.Top) and //если координаты 4 самолета и ракеты равны
(raketa.Top < sam4.Top+ sam4.height)
and
(raketa.left > sam4.left) and
(raketa.left < sam4.left+sam4.Width))
then
begin
timer2.Enabled:=false;
raketa.left:=tank.left+50;
raketa.top:=tank.top+70;
boom4.Left:=sam4.Left;
boom4.Visible:=true;
sam4.left:=+700;
i:=i+1;
end;
if i=20 then begin
n:=10;
label3.Caption:='Уровень сложности:2';
end;
if i=40 then begin
n:=14;
label3.Caption:='Уровень сложности:3';
end;
if i=60 then begin
n:=20;
label3.Caption:='Уровень сложности:4';
end;
label1.caption:='Самолетов уничтожено:'+inttostr(i); //вывод сбитых самолетов
label2.Caption:='Ракет осталось:'+inttostr(j); //вывод оставшихся ракет
if j<1 then //если ракеты закончились
begin //игра остонавливаеться и выводиться сообщение
showmessage('Cамолетов врага уничтожено:'+inttostr(i));//вывод сбитых самолетов
close;
end;
end;
procedure TForm1.FormCreate(Sender: TObject); //при запуске игры выводиться сообщение
begin
showmessage('p-пауза,о-возобновить игру,i-навая игра,space-огонь, <-,-> -управление танком');
j:=10;
boom.Visible:=false; //стартовое кол-во ракет
boom2.Visible:=false;
boom3.Visible:=false;
boom4.Visible:=false;
n:=8;
label1.caption:='Самолетов уничтожено:'+inttostr(i); //вывод сбитых самолетов
label2.Caption:='Ракет осталось:'+inttostr(j); //вывод оставшихся ракет
label3.Caption:='Уровень сложности:1';
end;
end.
Приложение 2
Основное окно Form1
Приложение 3
Оно после запуска программы
Приложение 4
Окно во время работы программы
Приложение 5
Окно после завершения работы программы
Размещено на Allbest.ru
...Подобные документы
Создание игры "Сбей самолет" в середе визуального программирования Delphi. Классификация таймеров: малоточные, точные и сверхточные. Разработка алгоритма мультипликации самолета. Описание пользовательского интерфейса и технологий отображения графики.
курсовая работа [782,0 K], добавлен 16.02.2015Назначение и область применения, технические характеристики, постановка задачи, описание алгоритма и организация входных и выходных данных для программы. Разработка, описание логической структуры, используемые технические средства и условия выполнения.
курсовая работа [969,3 K], добавлен 26.03.2009Исследование спецификации логической игры "Сапёр". Системное и функциональное проектирование приложения. Разработка программных модулей. Обзор классов, необходимых для создания интерфейса данного приложения. Инструменты для реализации логической игры.
курсовая работа [1,2 M], добавлен 13.01.2016Создание компьютерной игры посредством среды программирования Delphi. Инструменты разработки, компоненты и методы для разработки программы. Логическая и физическая структуры, основные функции и элементы управления программы, ее тестирование и отладка.
курсовая работа [27,9 K], добавлен 26.07.2014Выбор языка и среды программирования, его обоснование. Методика и этапы реализации заданной игрой программными средствами. Принципы разработки пояснительной записки для описания функциональных возможностей разработанного программного приложения.
курсовая работа [354,8 K], добавлен 02.03.2014Особенности среды визуального проектирования Borland Delphi 7.0. Этапы разработки программы и составления блок-схемы алгоритмов. Способы вычисления кусочно-заданной функции одной переменной. Рассмотрение компонентов среды Delphi, ее предназначение.
контрольная работа [703,8 K], добавлен 24.09.2012Основные приемы работы в среде программирования Delphi. Особенности технологии создания простейших приложений. Работа с компонентами среды разработки приложений. Ввод, редактирование, выбор и вывод информации. Аспекты использования структуры ветвления.
методичка [619,9 K], добавлен 17.11.2011Изучение особенностей создания алгоритмов вычислительных задач. Визуальное программирование стандартных компонентов среды программирования Delphi. Технология создания компонента Delphi для решения производственной задачи. Выполнение блок-схемы алгоритма.
курсовая работа [638,0 K], добавлен 30.01.2015Разработка программы для работы в операционных системах семейства Windows. Использование среды Delphi - современной технологии визуального проектирования. Создание пользовательского интерфейса, оконного приложения, меню; задание исходной матрицы.
курсовая работа [1,5 M], добавлен 12.01.2011Описания объектов, свойств, методов, формы и основных модулей текста программы в среде Delphi. Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования. Анализ результатов тестирования программного продукта.
курсовая работа [2,4 M], добавлен 27.08.2012Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.
презентация [184,3 K], добавлен 18.03.2014Этапы разработки системы реального времени для распознавания лиц на статическом изображении в условиях сложных сцен. Основные понятия алгоритма AdaBoost. Использование примитивов Хаара для описания свойств изображений. Среда разработки "Borland Delphi".
курсовая работа [6,8 M], добавлен 06.01.2011Выбор состава технических и программных средств для создания данного приложения "Экзаменатор", использование среды разработки Borland Delphi. Основные компоненты и спецификация программы. Используемые технические средства, описание и запуск программы.
курсовая работа [540,8 K], добавлен 18.07.2012Эффективные средства разработки программного обеспечения. Технология визуального проектирования и событийного программирования. Конструирование диалоговых окон и функций обработки событий. Словесный алгоритм и процедуры программы Borland Delphi 7 Studio.
дипломная работа [660,2 K], добавлен 21.05.2012Применение языка Delphi в качестве языка программирования для реализации игры "Разноцветные кубики". Методы заполнения квадратной матрицы. Разработка алгоритма решения задачи, структурная организация данных. Характеристика программного средства.
курсовая работа [281,8 K], добавлен 14.05.2013Общая характеристика системы программирования Delphi, а также принципы создания ее компонентов. Описание значений файлов приложения, созданного с помощью Delphi. Структура и свойства библиотеки визуальных компонентов (Visual Component Library или VCL).
отчет по практике [1,1 M], добавлен 07.12.2010Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.
курсовая работа [738,1 K], добавлен 17.05.2010Delphi как среда разработки программ, ориентированных на работу в Windows. Назначение и преимущество использования электронных учебников. Описание возможностей среды Delphi 5 для разработки электронного учебника. Варианты применения служб Internet.
дипломная работа [3,6 M], добавлен 13.07.2011Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.
курсовая работа [880,1 K], добавлен 21.04.2015Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.
курсовая работа [2,3 M], добавлен 31.01.2016