Смекни!
smekni.com

Разработка приложений для Windows, представляющего собой компьютерную игру Сбей самолет (стр. 1 из 2)

Оглавление

Введение.......................................................................................................... 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