Спецификация программы

Содержание

 

Введение

1. Разработка программы

1.1 Технические характеристики

1.2 Выбор состава технических и программных средств

2. Разработка рабочего проекта

2.1 Разработка программы

2.2 Спецификация программы

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

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

3. Внедрение

Заключение

Глоссарий

Список использованных источников

Приложения



Введение

 

Задание на курсовую работу по дисциплине: «Алгоритмические языки и программирование».

Тема: Разработка игрового приложения для ОС Microsoft Windows.

Условие задачи: Написать программу «Угадайка». Компьютер случайным образом загадывает число от 1 до 100. Задача пользователя – за минимальное количество попыток, но не более шести, угадать это число, предлагая компьютеру свои варианты, в ответ на которые программа указывает счёт попытки и сообщение о том, больше загаданное число или меньше введённого с клавиатуры. При правильной стратегии (деление интервала чисел пополам) наверняка угадать число можно за семь попыток. Игра состоит из пяти партий. После последней партии выводятся результаты.

Назначение программы: игра.

Область применения: ПК, работающий под управлением ОС Microsoft Windows (версии 9x/2k/XP и более поздних).



Разработка программы

Технические характеристики

 

По условию задачи, необходимо разработать приложение для ОС Microsoft Windows – игру. По правилам игры, компьютер будет загадывать число, а пользователю необходимо будет за ограниченное число попыток (6 попыток) его угадать.

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

Если за 6 попыток пользователю удаётся угадать число, игра завершается. Если число так и не было отгадано, игра также завершается, а пользователю сообщается загаданное число.[1]

Для проверки честности будет использован алгоритм шифрования MD5. Механизм его работы заключается в следующем: после генерации случайного числа, которое пользователю необходимо будет отгадать в процессе игры, генерируется и текстовая строка, по которой можно будет явно определить какое число было загадано (например, «__загадано__:_число___99»).

Эта строка является исходной, а её md5-хэш (последовательность из 32 шестнадцатеричных чисел) будет сообщаться пользователю до начала игры. Данный хэш практически невозможно расшифровать (получить из него исходную строку), что предотвращает возможность получения загаданного числа иными методами, кроме угадывания его, однако для проверки честности пользователю достаточно лично получить из исходной строки md5-хэш (для этого существует множество небольших программ, в том числе и веб-приложений).[2]

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

В файле будут храниться: имя игрока (вводится пользователем в случае успешной игры), результат (количество попыток, за которые было отгадано число), а также дата и время завершения игры.

 

Выбор состава технических и программных средств

 

Поскольку, согласно условию задачи, необходимо разработать приложение для операционной системы Microsoft Windows, для написания программы была выбрана интегрированная среда разработки Borland Delphi версии 7, которая позволяет достаточно быстро создавать приложения за счёт упрощения разработки визуальной части проекта.[4]

Delphi 7 может работать в среде ОС от Windows 95 до Windows XP и Vista. Особых требований к компьютеру система не предъявляет, за исключением того, что процессор должен быть типа Pentium, оперативной памяти - не менее 32 Мбайт и достаточное количество свободной дисковой памяти.[5]



Разработка рабочего проекта

Разработка программы

 

При разработке программы «Угадайка» была использована среда программирования Borland Delphi 7. Проект содержит одну форму – Form1 (см. Рисунок 1). На форме расположены кнопки (TButton) – меню программы (повторяет элементы TMainMenu1), 4 контейнера TPanel и TMainMenu.

 

Рис. 1 – Окно формы Ugadaika

 

Свойства формы Form1:

- Align = alNone

- BorderIcons = [biSystemMenu,biMinimize]

- BorderStyle = bsSingle

- Caption = “Угадайка”

- ClientHeight = 406

- ClientWidth = 252

- Color = clBtnFace

- Position = poScreenCenter

Cобытия формы Form1:

- OnCreate: объявление массивов

- OnCloseQuery: вопрос с подтверждением закрытия программы

TMainMenu1 – главное меню программы, скрытый элемент управления, содержащий массив раздела меню (см. Рисунок 2).

 

Рис. 2 – Окно TMainMenu1

 

1. Элементы TMainMenu1:

N1: Игра

- NewGame: Новая игра (ShortCut = F2)

- BestResults: Лучшие результаты

- ExitProgr: Выход

N2: Справка

- Rules: Правила игры

- About: О программе (ShortCut = F1)

Для элементов меню «О программе» (About) и «Новая игра» (NewGame) назначены «горячие клавиши» - F1 и F2 соответственно. Это сделано как для удобства пользователя, так и согласно устоявшимся традициям написания приложений для ОС Microsoft Windows. Кнопки TButton10, TButton11, TButton12, TButton13 и TButton14 расположены на форме лишь для удобства управления приложением. Их события полностью повторяют события соответствующих элементов главного меню (точнее, при клике по каждой кнопке инициируется событие соответствующего элемента TMainMenu1), однако управление приложением для пользователя заметно упрощается.[6]

2. Свойства компонента TButton10:

- Caption = Начать новую игру

- Left = 8

- Top = 104

- Height = 25

- Width = 233

События компонента TButton10:

- OnClick: переход к процедуре NewGame.OnClick

3. Свойства компонента TButton11:

- Caption = Правила игры

- Left = 8

- Top = 136

- Height = 25

- Width = 233

События компонента TButton11:

- OnClick: переход к процедуре Rules.OnClick

4. Свойства компонента TButton12:

- Caption = Лучшие результаты

- Left = 8

- Top = 168

- Height = 25

- Width = 233

События компонента TButton12:

- OnClick: переход к процедуре BestResults.OnClick

5. Свойства компонента TButton14:

- Caption = О программе

- Left = 8

- Top = 200

- Height = 25

- Width = 233

События компонента TButton14:

- OnClick: переход к процедуре About.OnClick

5. Свойства компонента TButton13:

- Caption = Выход

- Left = 8

- Top = 232

- Height = 25

- Width = 233

События компонента TButton13:

- OnClick: переход к процедуре ExitProgr.OnClick

Компоненты, относящиеся к различным «частям» игры были размещены на четырёх различных TPanel. Панель является «контейнером» компонентов и элементов управления приложением.[7]

Для упрощения проектирования приложения, однотипные элементы были сгруппированы в массивы элементов. Это позволяет в процессе выполнения программы легко обращаться к ним лишь по индексу, не прибегая к сложным конструкциям кода.[8]

TPanel1 (см. Рисунок 3) содержит компоненты, задействованные в основной игре. Когда свойству Visible присваивается значения true, аналогичное свойство других трёх компонентов TPanel приобретает значение false. Также при этом свойство Align приобретает значение alClient, что позволяет «развернуть» TPanel1 по размеру формы. [9]

 

Рис. 3 – Компонент TPanel1

 

6. Массивы из групп компонентов, находящихся на TPanel1:

- AttemptLabel: TLabel4, TLabel2, TLabel5, TLabel6, TLabel7, TLabel8

- AttemptSpin: TSpinEdit1, TSpinEdit2, TSpinEdit3, TSpinEdit4, TSpinEdit5, TSpinEdit6

- AttemptButton: TButton1, TButton2, TButton3, TButton4, TButton5, TButton6

Свойства компонента TPanel1:

- Align = alNone (данное значение меняется в процессе выполнения программы)

- BevelOuter = bvNone

- Color = clBtnFace

- Left = 0

- Top = 500 (данное значение меняется в процессе выполнения программы)

- Height = 406

- Width = 252

- Visible = false (данное значение меняется в процессе выполнения программы)

6.1. Свойства компонента TLabel1:

- Alignment = taCenter

- Caption = “Генерируется число…” (данное значение меняется в процессе выполнения программы)

- Color = clBtnFace

- Left = 1

- Top = 8

- Height = 65

- Width = 250

- WordWrap = true

6.2. Свойства компонента TLabel2:

- Caption = “У вас есть 6 попыток, чтобы отгадать это число” (данное значение меняется в процессе выполнения программы)

- Color = clBtnFace

- Left = 8

- Top = 96

- Height = 13

- Width = 233

6.3. Свойства компонента TLabel9:

- Caption = “md5-hash”

- Color = clBtnFace

- Left = 8

- Top = 80

- Height = 13

- Width = 49

6.4. Свойства компонента TLabel10:

- AutoSize = false

- Caption = “hash”

- Color = clBtnFace

- Font.Color = clGray

- Left = 64

- Top = 80

- Height = 13

- Width = 185

6.5. Свойства компонента AHint (тип – TLabel):

- AutoSize = false

- Caption = “AHint”

- Color = clBtnFace

- Left = 8

- Top = 120 (данное значение меняется в процессе выполнения программы)

- Height = 13

- Width = 233

6.6. Свойства компонента TEdit1:

- BevelInner = bvLowered

- BorderStyle = bsNone

- Color = clBtnFace

- Left = 64

- Top = 96

- Height = 21

- Width = 185

- Visible = false (данное значение меняется в процессе выполнения программы)

6.7. Свойства массива компонентов AttemptLabel (тип – TLabel):

- Caption = “Попытка №…”

- Color = clBtnFace

- Left = 8

- Height = 13

- Width = 65

6.8. Свойства массива компонентовAttemptSpin (тип – TspinEdit):

- Color = clWindow

- MinValue = 1

- MaxValue = 100

- Left = 96

- Height = 22

- Width = 65

6.9. Свойства массива компонентов AttemptButton (тип – TButton):

- Caption = “OK”

- Left = 168

- Height = 25

- Width = 75

Компонент имеет одно свойство: OnClick – сравнение введённого числа и загаданного, вывод промежуточных либо окончательных результатов игры.

На TPanel2 (см. Рисунок 4) находятся компоненты, задействованные при выводе лучших результатов игры. [10]


Рис. 4 – Компонент TPanel2

 

7. Массивы из групп компонентов, находящихся на TPanel2:

- r0: TLabel16, TLabel20, TLabel24, TLabel28, TLabel32, TLabel36, TLabel40, TLabel44, TLabel48, TLabel52.

- r1: TLabel17, TLabel21, TLabel25, TLabel29, TLabel33, TLabel37, TLabel41, TLabel45, TLabel49, TLabel53.

- r2: TLabel18, TLabel22, TLabel26, TLabel30, TLabel34, TLabel38, TLabel42, TLabel46, TLabel50, TLabel54.

- r3: TLabel19, TLabel23, TLabel27, TLabel31, TLabel35, TLabel39, TLabel43, TLabel47, TLabel51, TLabel55.

Свойства компонента TPanel2:

- Align = alNone (данное значение меняется в процессе выполнения программы)

- BevelOuter = bvNone

- Color = clBtnFace

- Left = 0

- Top = 500 (данное значение меняется в процессе выполнения программы)

- Height = 406

- Width = 252

- Visible = false (данное значение меняется в процессе выполнения программы)

7.1. Свойства компонента TLabel11:

- Caption = “Лучшие результаты”

- Color = clBtnFace

- Left = 8

- Top = 16

- Height = 13

- Width = 103

7.2. Свойства компонента TLabel12 и массива компонентов r0 (тип – TLabel):

- Caption = “№” (данное значение меняется в процессе выполнения программы)

- Color = clBtnFace

- Left = 8

- Height = 13

- Width = 11

7.3. Свойства компонента TLabel13 и массива компонентов r1 (тип – TLabel):

- Caption = “Имя игрока” (данное значение меняется в процессе выполнения программы)

- Color = clBtnFace

- Left = 13

- Height = 13

- Width = 60

7.4. Свойства компонента TLabel14 и массива компонентов r2 (тип – TLabel):

- Caption = “Попытки” (данное значение меняется в процессе выполнения программы)

- Color = clBtnFace

- Left = 104

- Height = 13

- Width = 45

7.5. Свойства компонента TLabel15 и массива компонентов r3 (тип – TLabel):

- Alignment = taRightJustify

- AutoSize = false

- Caption = “Дата и время” (данное значение меняется в процессе выполнения программы)

- Color = clBtnFace

- Left = 148

- Height = 13

- Width = 100

7.6. Свойства компонента TButton7:

- Caption = “Вернуться в меню”

- Left = 8

- Top = 368

- Height = 25

- Width = 233

Компонент имеет одно событие – OnClick: при его инициализации Panel2 убирается с экрана. TPanel3 – информационная панель «О программе» (см. Рисунок 5). На ней расположены текстовые метки (TLabel) и кнопка (TButton8) для возвращения в «главное меню» программы.

8. Свойства компонента TPanel3:

- Align = alNone (данное значение меняется в процессе выполнения программы)

- BevelOuter = bvNone

- Color = clBtnFace

- Left = 0

- Top = 500 (данное значение меняется в процессе выполнения программы)

- Height = 406

- Width = 252

- Visible = false (данное значение меняется в процессе выполнения программы)

 

Рис. 5 – Компонент TPanel3

 

8.1. Свойства компонента TLabel56:

- Caption = "Угадайка", ver.1.0

- Color = clBtnFace

- Font.Style = [fsBold]

- Left = 8

- Top = 16

- Height = 13

- Width = 118

8.2. Свойства компонента TLabel57:

- Caption = "Автор программы"

- Color = clBtnFace

- Left = 8

- Top = 56

- Height = 13

- Width = 95

8.3. Свойства компонента TLabel58:

- Caption = "Здесь Ф.И.О студента"

- Color = clBtnFace

- Left = 24

- Top = 72

- Height = 13

- Width = 172

8.4. Свойства компонента TLabel59:

- Caption = "Студент? указать курс"

- Color = clBtnFace

- Left = 24

- Top = 88

- Height = 13

- Width = 80

8.5. Свойства компонента TLabel60:

- Caption = "Группы??? указать группу"

- Color = clBtnFace

- Left = 24

- Top = 104

- Height = 13

- Width = 80

8.6. Свойства компонента TLabel61:

- Caption = "Указать филиал СГА"

- Color = clBtnFace

- Left = 24

- Top = 120

- Height = 13

- Width = 137

8.7. Свойства компонента TLabel62:

- Caption = "© All rights reserved, 2010"

- Color = clBtnFace

- Left = 8

- Top = 144

- Height = 13

- Width = 125

8.8. Свойства компонента TButton8:

- Caption = “Вернуться в меню”

- Left = 8

- Top = 368

- Height = 25

- Width = 233

Компонент имеет одно событие – OnClick: при его инициализации Panel3 убирается с экрана.

TPanel4 – панель, содержащая информацию о правилах игры (см. Рисунок 6). Содержит всего 3 компонента типа TLabel и одну кнопку – TButton9.


Рис. 9 – Компонент TPanel4

 

9. Свойства компонента TPanel4:

- Align = alNone (данное значение меняется в процессе выполнения программы)

- BevelOuter = bvNone

- Color = clBtnFace

- Left = 0

- Top = 500 (данное значение меняется в процессе выполнения программы)

- Height = 406

- Width = 252

- Visible = false (данное значение меняется в процессе выполнения программы)

9.1. Свойства компонента TLabel63:

- Caption = "Правила игры"

- Color = clBtnFace

- Font.Style = [fsBold]

- Left = 8

- Top = 24

- Height = 13

- Width = 118

9.2. Свойства компонента TLabel64:

- AutoSize = false

- Caption = "Компьютер "загадывает" случайное число от 1 до 100. Ваша задача: угадать его за наименьшее количество попыток. После каждой попытки вам сообщается: больше загаданное число указанного вами или меньше. Теоретически, загаданное число можно определить за 7 попыток, однако в этой игре вам даётся только 6 - ведь должен же быть хоть какой-то шанс у компьютера! ”

- Color = clBtnFace

- Font.Style = [fsBold]

- Left = 8

- Top = 48

- Height = 153

- Width = 241

- WordWrap = true

9.3. Свойства компонента TLabel65:

- AutoSize = false

- Caption = "Для проверки честности используется алгоритм шифрования md5: после того, как компьютером было сгенерировано число, генерируется также и строка, позволяющая подтвердить в конце игры, что компьютер "не мухлевал". Md5-хэш этой строки вам сообщается сразу же после генерации числа.”

- Color = clBtnFace

- Font.Style = [fsBold]

- Left = 8

- Top = 192

- Height = 153

- Width = 241

- WordWrap = true

9.4. Свойства компонента TButton9:

- Caption = “Вернуться в меню”

- Left = 8

- Top = 368

- Height = 25

- Width = 233

Компонент имеет одно событие – OnClick: при его инициализации Panel3 убирается с экрана.

 



Спецификация программы

 

Исполняемый файл программы носит название Ugadaika.exe, его размер составляет 453632 байт, файл расположен в корневом разделе носителя. Исходный код проекта находится в файле Ugadaika.pas (Приложение А), размер файла составляет 12976 байт (содержит 559 строк кода).

 

Таблица 2.1 – Спецификация программы

Наименование Обозначение Примечание
Md5hash.dcu Объектный файл для Md5hash.pas Откомпилированная версия Md5hash.pad
Md5hash.pas Файл программного модуля Md5hash Определяет функциональность Md5hash
Md5lib.dll Файл библиотек Хранит набор откомпилированных ресурсов
Project1.dof Файл параметров проекта Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы.
Project1.dpr Файл проекта Связывает между собой все файлы, из которых состоит проект
Project1.res Файл ресурсов Содержит пиктограммы, графические изображения
Ugadaika.pas Файл программного модуля Формы 1 Определяет функциональность формы №1
Ugadaika.dfm Файл формы 1 Содержит список всех компонентов, включенных в форму 1
Ugadaika.dcu Объектный файл для Unit1.Pas Откомпилированная версия Unit1.Pas
Project1.exe Исполняемый файл Откомпилированный файл проекта
Results.dat Текстовый файл Содержит информацию о лучших результатах предыдущих игр

 

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

Общие сведения: программа «Угадайка» была создана при помощи среды разработки Borland Delphi версии 7.0. Программа работает в ОС MS Windows 98 и выше.

Функциональное назначение программы: досуг, развлечение.

Описание логической структуры: данная программа не имеет связей с другими приложениями.

Используемые технические средства: программа была разработана при использовании компьютера на базе процессора Intel Celeron 2.2 МГц, объемом ОЗУ 2048 Мб. Программные средства: ОС Microsoft Windows XP, Borland Delphi 7.0.

Вызов и загрузка: игра загружается после запуска исполняемого файла Ugadaika.exe

игровой приложение программа угадайка




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: