Реферат: Разработка приложений для Windows, представляющего собой компьютерную игру Сбей самолет
Название: Разработка приложений для Windows, представляющего собой компьютерную игру Сбей самолет Раздел: Рефераты по информатике Тип: реферат | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Оглавление Введение.......................................................................................................... 3 1 Разработка эскизного и технического проекта программы....................... 4 1.1 Назначение и область применения........................................................... 4 1.2 Постановка задачи.................................................................................... 4 1.3 Описание алгоритма................................................................................. 5 1.4 Выбор состава технических и программных средств............................. 7 1.5 Организация входных и выходных данных............................................ 7 2 Разработка рабочего проекта...................................................................... 8 2.1 Разработка программы............................................................................. 8 2.2 Спецификация программы..................................................................... 10 2.3 Текст программы.................................................................................... 10 2.4 Описание программы.............................................................................. 18 2.5 Тестирование программы....................................................................... 18 2.6 Внедрение................................................................................................ 19 Заключение.................................................................................................... 21 Глоссарий...................................................................................................... 22 Качество......................................................................................................... 22 Список использованных источник............................................................... 23 Приложение................................................................................................... 24 ВведениеЗадание на курсовую работу по дисциплине «Программирование на языке высокого уровня» Студент группы: Направление: «Информатика и ВТ» № контракта: Тема: Разработка приложений для Windows, представляющего собой компьютерную игру «Сбей самолет». Условие задачи: Разработать программу, моделирующую игру «Сбей самолет». По экрану летят вражеские самолеты. Цель играющего – сбить их. Пусковая установка находится в нижней строке экрана, её можно передвигать по строке вперед и назад. Задание выдано: _______________________ _____________ (подпись) (число) 1 Разработка эскизного и технического проекта программы1.1 Назначение и область примененияНеобходимо разработать учебную программу. Область применения: досуг программиста. Поскольку ставится задача разработать приложение для Windows, то использоваться программа может под управлением Windows 9x/2000/XP. 1.2 Постановка задачиКак указано в условии задачи необходимо, чтобы по экрану летели вражеские самолеты, а в нижней части экрана находилась пусковая установка, с помощью которой необходимо сбить самолеты. В данном примере для реализации такой задачи используется графический вывод на экран всех объектов игры. Так как почти все объекты игры могут находиться в движении в любой момент игры неизвестный изначально, то необходимо постоянно обновлять изображение в игровом поле. Обновление игрового поля должно происходить через определенные промежутки времени. Для этого нужно использовать таймер, с помощью которого будет вызываться процедура обновления. Также с помощью этого таймера, через такие же промежутки времени, но перед выводом, для того чтобы игра развивалась, будут происходить расчеты для новых положений и состояний объектов игры. Игровое поле состоит из следующих элементов. В самом верху игрового поля сверху вниз находятся невидимых пять маршрутов, по которым могут лететь самолеты слева направо по горизонтали. То есть эти пути представляют собой ячейки, из которых выпускаются самолеты. Если по одному пути летит самолет, то он закрыт для выпуска второго в этот же путь. Это напоминает движение настоящих самолетов по заданным маршрутам. Таким образом, одновременно на экране может находиться максимум пять самолетов, которые можно сбивать с помощью пусковой установки. Для наглядности игры и придания большей заинтересованности игроку используются три типа самолетов: дирижабль, вертолет и самолет. У каждого типа своя определенная скорость полета. Для того чтобы было интересно играть в эту игру, смысл в нее заложен следующий. Примерно за две минуты игроку необходимо сбить максимально возможное количество самолетов. В зависимости от типа самолета сбитого или пропущенного, а также в зависимости от высоты этого самолета игроку начисляются очки. Если игрок пропустил самолет, то чем медленней был самолет, тем больше очков у него отнимется. Также чем ниже был пропущен самолет, т. е. в него проще всего было попасть, тем больше отнимется у игрока очков. Отсюда следует, что чем проще всего было сбить пропущенный самолет, тем больше отнимается очков у игрока. И наоборот, чем выше и скоростней оказывается сбитый самолет, тем больше очков прибавляется игроку. Пусковую установку с помощью клавиатуры можно передвигать. Пусковая установка может выпустить максимум три пули. 1.3 Описание алгоритмаПри запуске приложения первым делом из файлов считываются картинки всех объектов игры. Изображения в файлах нарисованы на фоне с таким же цветом, как и цвет фона на игровом поле. Это необходимо, для того чтобы объекты отображались не в рамках отличного цвета от фона игрового поля. Далее, когда игрок нажмет на кнопку «Поехали» всем переменных задаются начальные значения и начинается игровой процесс, который продлится две минуты. По ходу игры выводится результаты. При закрытии приложения происходит выгрузка картинок из памяти. Общая схема алгоритма работы всего приложения, с представлением в ней всех процедур как отдельных блоков, приведена на рисунке 1. Более конкретный алгоритм приложения представлен на рисунке 2.
Рисунок 1 - Обобщенная схема работы всего приложения Рисунок 2 - Алгоритм работы приложения 1.4 Выбор состава технических и программных средствДелается вывод о необходимости использования интегральной среды разработки программ Delphi. Среда Delphi позволяет достаточно быстро разрабатывать приложения для Windows. Технические характеристики компьютера: Pentium 100 и выше; объём оперативной памяти 8 Мб; жёсткий диск объёмом не менее 500 Мб. Именно эти параметры создают условия для полноценной работы IDE Delphi[1] и программ, созданных в этой среде. Дополнительных средств (принтер, сканер и т. д.) не требуется. 1.5 Организация входных и выходных данныхВходными данными являются команды, поступающие от пользователя о направлении движения пусковой установки и выстрелах. В зависимости от этих данных определяется положение установки на игровом поле. После обработки поступающих данных в игровом процессе на экран выдается результат (выходные данные) в виде полученных очков. Также во время игры случайным образом создаются самолеты и летят по случайно заданным «маршрутам». Результат этих действий игрок видит на экране. 2 Разработка рабочего проекта2.1 Разработка программыДля разработки приложения игры «Сбей самолет» используется среда визуального программирования Delphi. Проект программы содержит одно окно. Окно – Form1 представлено на рисунке 3. Рисунок 3 - Окно приложения Компонент Form1 Свойства: Caption-Самолетик; Border- bssingle; 1-компонент Button1; свойства: caption-Поехали; Событие: Onclick- активация ttimer1 2-компонент label2; свойства: caption- для того чтобы остановить игру нажмите клавишу ESC 3-компонент label1; свойства: caption-вы сбили 4-компонент label3; свойства: caption-кол-во сбитых самолетов; 5-компонент image1; поле на котором рисуется поле битвы 6-компонент ttimer1; свойства: enable-false; interval-10 мс; 2.2 Спецификация программыИсполняемый файл программы «Сбей самолет» имеет название Project1.exe. Его работоспособность не зависит от расположения на диске. Необходимо, чтобы файлы, прилагающиеся к программе, находились в указанных каталогах. Наименования файлов входящих в проект и краткая информация об их содержании представлены в приложении. 2.3 Текст программыunit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls; type TForm1 = class(TForm) Image1: TImage; Timer1: TTimer; Button1: TButton; Label2: TLabel; Label1: TLabel; Label3: TLabel; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; //============================================================================== procedure FillZap(ind: integer); //============================================================================== const n=10; type TSprite= record X,Y : integer; vectX, vectY: integer; koef_a, koef_b: real; speed : integer; Gr : TBitmap; end; TRocket= record X,Y: integer; Gr : TBitmap; Destroed: Boolean; end; var Form1: TForm1; a:integer=0; Su25: array [1..n] of TSprite; turel: TSprite; rocket: TRocket; Killed: integer=0; implementation {$R *.dfm} //============================================================================== procedure Colision; var I: integer; begin for i:=1 to n do begin if (rocket.X>Su25[i].X) and (rocket.X<(Su25[i].X+Su25[i].Gr.Width)) and (rocket.Y<(Su25[i].Y+Su25[i].Gr.Height)) and (rocket.Y>Su25[i].Y) then begin rocket.Destroed:=true; rocket.Y:=Form1.Image1.Height+10; inc(Killed); FillZap(i); end; end; end; //============================================================================== procedure FillZap(ind: integer); begin Su25[ind].X:=random(Form1.Image1.Width-35); Su25[ind].Y:=-1; Su25[ind].vectX:=random(Form1.Image1.Width div 2); Su25[ind].vectY:=Form1.Image1.Height+10; Su25[ind].koef_b:=Su25[ind].X; Su25[ind].koef_a:=Su25[ind].vectX/Su25[ind].vectY; end; //============================================================================== procedure Calc; var i: integer; begin For i:=1 to n do begin if Su25[i].Y>Form1.Image1.Height then FillZap(i); Su25[i].X:=round(Su25[i].Y*Su25[i].koef_a+Su25[i].koef_b); inc(Su25[i].Y,random(10)); end; if rocket.Destroed<>true then dec(rocket.Y,10); if rocket.Y<-10 then begin rocket.Destroed:=true; rocket.Y:=Form1.Image1.Height+10; end; end; //============================================================================== procedure ClearScr; begin Form1.Image1.Canvas.Brush.Color:=clBlack; Form1.Image1.Canvas.FillRect(Rect(0,0,Form1.Image1.Width,Form1.Image1.Height)); end; //============================================================================== procedure LoadImages_; var i: integer; begin For i:=1 to n do begin Su25[i].Gr:=TBitmap.Create; Su25[i].Gr.LoadFromFile('graph\samolet1.bmp'); Su25[i].Gr.TransparentColor:=clRed; Su25[i].Gr.Transparent:=true; end; turel.Gr:=TBitmap.Create; turel.Gr.LoadFromFile('graph\turel.bmp'); turel.Gr.TransparentColor:=clRed; turel.Gr.Transparent:=true; turel.X:=turel.Gr.Width+10; turel.Y:=521-turel.Gr.Height; Rocket.Gr:=TBitmap.Create; Rocket.Gr.LoadFromFile('graph\bullet.bmp'); Rocket.Gr.TransparentColor:=clWhite; Rocket.Gr.Transparent:=true; Rocket.Y:=Form1.Image1.Height+10; Rocket.Destroed:=true; end; //============================================================================== procedure DrawScene; var I: integer; begin For i:=1 to n do begin Form1.Image1.Canvas.Draw(Su25[i].X,Su25[i].Y, Su25[i].Gr); end; Form1.Image1.Canvas.Draw(turel.X,turel.Y,turel.Gr); Form1.Image1.Canvas.Draw(rocket.x,rocket.Y, rocket.Gr); end; //============================================================================== procedure Precache_; var i: integer; begin For i:=1 to n do FillZap(i); end; //============================================================================== procedure TForm1.Timer1Timer(Sender: TObject); begin Calc; Colision; ClearScr; DrawScene; label3.Caption:=inttostr(Killed)+' самолетов'; if killed>=100 then begin label3.Caption:='Вы выйграли'; Timer1.Enabled:=false; Button1.Enabled:=true; killed:=0; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Randomize; LoadImages_; Precache_; ClearScr; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Timer1.Enabled:=false; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_LEFT : begin if turel.X >0 then dec(turel.X,10); end; VK_RIGHT : begin if turel.X<Image1.Width-turel.Gr.Width then inc(turel.X,10); end; VK_SPACE : begin if rocket.Destroed then begin rocket.Destroed:=false; rocket.X:=turel.X + turel.Gr.Width div 2; end; end; VK_ESCAPE : begin Timer1.Enabled:=false; Button1.Enabled:=true; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Button1.Enabled:=false; Timer1.Enabled:=true; end; procedure TForm1.N2Click(Sender: TObject); begin Showmessage('Игра "Сбей самолет"'#13#13#13'Автор: студент Дин-809-01 Быстрикова Анна') end; end. 2.4 Описание программыОбщие сведения: программа разработана в среде программирования Delphi 7. Функциональное назначение программы: программа предназначена для развлечения. Используемые технические средства: при разработке программы были использованы следующие технические и программные средства: - компьютер на базе процессора Intel Pentium 4 3.00 GHz - объем оперативной памяти 512 Мб - операционная система Windows XP Professional Вызов и загрузка: для того, чтобы запустить программу, необходимо запустить файл «Project1.exe». 2.5 Тестирование программыДля тестирования программы были пройдены все этапы игры. Контрольный пример предполагал проверку следующих требований: - возможность открытия приложения, - отображение рисунков, - работа счетчика «Вы сбили:». - возможность перехода игры в режим «Пауза». Программа тщательно проверялась. Ошибок не найдено. Вид приложения в случайный момент игры приведен на рисунке 4. Рисунок 4 - Вид окна приложения в случайный момент игры 2.6 ВнедрениеУсловия выполнения программы: Данное приложение способно работать на персональных компьютерах с минимальными требованиями Pentium 100, оперативной памятью 32 Мб, операционной средой Windows. Установка программы: в данном приложении не предусмотрен установочный пакет. Поэтому установка заключается в копировании папки содержащей весь состав проекта (см. приложение) с диска, дискеты или другого носителя на жесткий диск компьютера. Выполнение программы: для загрузки программы необходимо запустить файл «Project1.exe», для старта (повтора) игры следует нажать на кнопку «Поехали». Для того чтобы остановить игру нужно нажать на кнопку клавиатуры – «Esc». Для выхода из программы необходимо нажать Alt+F4 или щелкнуть левой кнопкой мыши по крестику в правом верхнем углу экрана. ЗаключениеПриложение представляет собой очень простой вариант игры «сбей самолет». Здесь используется цикл таймера для прорисовки объектов игры. Несмотря на то, что программист имеет право по-своему определять какие ему нужны компоненты при разработке приложения, так как главное результат, но данный подход, при котором для прорисовки на поле объектов игры используется цикл таймера не является оптимальным. Таймер имеет погрешность при определении интервала времени, поэтому в игре могут быть заметны мелкие скачки при выводе изображения. Но целью приложения является осуществление вывода графических объектов, поэтому такой подход в данном случае можно использовать. С помощью именно такого подсчета количества набранных очков, который используется в игре, можно получать довольно разнообразные результаты за одинаковый промежуток времени (времени игры). Это вызывает больший интерес к игре, т. к. игроки могут соревноваться в количестве набранных очков. Для уменьшения размера исполняемого файла картинки игры загружаются при запуске игры, но из-за этого увеличивается количество файлов необходимых для функциональности приложения. Глоссарий
Список использованных источник1. Александровский А. Д. Delphi 5.0. Разработка корпоративных приложений. – М.: ДМК, 2007. – 512 с. 2. Бобровский С.И. Delphi 7^ Учебный курс, -СПб.: Издательство «Питер» 2004. – 184 с. 3. Бондарёв В. М., Рублинецкий В. И., Качко Е. Г. «Основы программирования». Харьков: Фолио; Ростов н/Д: Феникс, 2003. – 504 с. 4. Власов А.Я. Справочник по программированию на Object Pascal. Киев, 2006. – 401 с. 5. Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. М., 2003. – 220 с. 6. Дарахвелидзе П., Марков Е. Программирование в Delphi 4.СПб.: БХВ. СПб., 2004.- 209 с. 7. Карпов Б. «Delphi: специальный справочник» -СПб.: Издательство «Питер», 2004. – 236 с. 8. Культин Н. «Delphi в задачах и примерах» -СПб.: Издательство «БХВ-Петербург», 2005. – 436 с. 9. Марков Е. «Программирование в Delphi 4», -СПб, «БХВ-Петербург», 2004. – 306 с. 10. Мейер Б., Бодуэн К. Методы программирования. М., 2003. –310 с. ПриложениеСостав проекта
[1] Для программирования игры «Сбей самолет» использовалась среда Delphi 7. |