Министерствообразования и науки Российской Федерации
Федеральноеагентство по образованию
Южно-Уральскийгосударственный университет
Кафедра«Информатика»
ПОЯСНИТЕЛЬНАЯЗАПИСКА
ккурсовой работе
по дисциплине «высокоуровневыеметоды информатики и программирования»
Тема:Быстрый счет
Выполнил: Плохов В.В.
Специальность: 080801
Группа: ЭиУ — 263
Челябинск – 2007
Оглавление
1.Введение
2.Основная часть
2.1.Постановка задачи
2.2.Разработкаобъектной модели программы
2.3.Описание файловпроекта
2.4.Описание работыпроекта
2.5.Некоторые общиемоменты
3.Заключение
4.Список источниковинформации
1.Введение
Разработка программы веласьс использованием средств Объектно-Ориентированного Программирования (ООП). ООП- концепция, которая в свое время произвела настоящую революцию впрограммировании. До появления ООП программа представляла собой логически единый код с ярко выраженными функциональными зависимостями (процедурныйподход). ООП предполагает, что приложение строится из набора независимых посвоему внутреннему устройству объектов. Таким образом, каждый объект можетсодержать собственные данные, недоступные другим объектам системы. Очевидно,что абсолютно независимыми объекты быть не могут, поскольку им необходимовзаимодействовать между собой, использовать общие данные и обмениватьсясобственными данными. Но, пока не меняется механизм взаимодействия с другимиобъектами системы, внутреннее устройство объекта можно изменять по своемужеланию, не затрагивая других компонент системы.
2.Основная часть2.1.Постановка задачи
Главной задачейявляется разработка законченного приложения, позволяющего в игровой форметренировать и улучшать навыки устного счета. Поскольку программа главнымобразом ориентирована на пользователя младшего и среднего школьного возраста,то за главную тематическую идею программы были взяты знаменитые сказочныеперсонажи из знаменитого произведения Алана Александра Милна “Вини-Пух иВсе-Все-Все”, которые выполнены в стилистике одноименного диснеевскогомультфильма.
Необходимыйдля реализации функционал:
· Разработкасистемы управления учетными записями, для возможности использования одногоприложения множеством пользователей.
o Разработкасистемы создания учетной записи.
o Разработкасистемы удаления учетной записи.
o Разработкасистемы активации учетной записи.
o Разработкаалгоритмов взаимодействия с базой данных.
o Разработкасистемы защиты от внесения ошибочных параметров в базу данных.
· Разработкаформирования таблицы рекордов, для возможности отслеживания лучших результатов,среди игроков.
o Разработкаматематической модели для возможности сбалансированного формирования рейтингамежду игроками различных уровней сложности.
o Разработкаалгоритма подсчета лучших результатов в записях базы данных.
o Разработкаалгоритма сортировки лучших результатов в записях базы данных.
· Разработкаролевой модели.
o Разработкаразличных видов персонажей.
o Разработкауникальных способностей каждого из персонажей.
o Разработкасистемы получения новых способностей.
· Разработкабазы данных.
o Разработкасинтаксиса файлов базы данных.
o Разработкаполей параметров хранимых в базе данных.
— Имя
— Персонаж
— Количествопройденных уровней
— Среднеевремя прохождения уровня
— Статусуникальной способности №1
— Статусуникальной способности №2
— Статусуникальной способности №3
o Разработкаалгоритмов обеспечивающих формирование файлов базы данных.
· Разработкаосновного игрового процесса.
o Разработкасистемы реализации различных уровней сложности.
o Разработкагенератора примеров с учетом выбранной сложности.
— Поддержкаопераций сложения.
— Поддержкаопераций вычитания.
— Поддержкаопераций умножения.
— Поддержкаопераций деления.
— Обеспечение генерации примеров с учетом обязательности целочисленного положительного, либоцелочисленного отрицательного ответа.
o Разработкатаймера, контролирующего отсчет игрового времени.
o Разработкаконтроля правильности ответа.
o Разработкасистемы “жизней”, для ограничения количества неверных ответов.
o Разработкавлияния уникальных способностей на игровой процесс.
· Разработкасистемы приобретения новых уникальных способностей.
o Разработкаалгоритмов контролирующих доступность приобретения способностей.
o Разработкаалгоритмов обеспечивающих запись о новых способностях в базу данных.
· Разработкасправочной системы и документации.
· Разработкаграфической оболочки приложения.
o Разработкаглавного меню.
o Разработкаокна управления учетными записями.
o Разработкаокна основного игрового процесса.
o Разработкаокна “Магазина”, для приобретения новых способностей.
o Разработкаокна справочной системы.
o Разработкаокна таблицы рекордов.2.2.Разработка объектной моделипрограммы
При написанииприложения использовались основные принципы ООП. Ниже перечислены используемыев программе классы:
1) classdatabase – “Пустой” класс,который содержит только статические методы, по работе с файлами базы данных.
Прототипы методовкласса:
staticint add_player();- обеспечивает добавление новой сформированной записи в файл базы данных.
staticvoid del_player(intn); — обеспечивает удаление записииз файла базы данных. Передаваемый целочисленный параметр n,указывает номер удаляемой строки содержащейся в базе данных.
static voidinit_list(); — обеспечивает инициализацию листа списка учетных записей из файлабазы данных.
static voidread_player(); — обеспечивает считывание параметров учетной записи из файлабазы данных и формирует окно параметров игрока в системе управления учетнымизаписями.
static voidsave_player(); — обеспечивает сохранение обновленных параметров игрока в файлебазы данных.
2) classexercise –абстрактный класс, который содержит параметры генерируемого примера, а такжесодержит абстрактный метод генерации примера. Имеет двух потомков: withone,withtwo.
Параметры класса:
inta, intb, intc; – числовые значения формирующиеэлементы примера.
intansw; – числовое значение содержащееправильный ответ на сформированный пример.
intsign, intsign2; – числовые значения формирующиепервый и второй знак примера соответственно.
Прототипы методовкласса:
virtualvoid generate(int h); — абстрактныйметод.
3)class withone: public exercise – класс-потомок,отпредкаexercise.
Прототипы методовкласса:
void generate(int h); — формирует пример с одним действием (сложение, вычитание, умножение, деление).Использует целочисленную переменную h,для формирования примера в соответствии с уровнем сложности.
4)class withtwo: public exercise – класс-потомок,отпредкаexercise.
Прототипы методовкласса:
void generate(int h); — формирует пример с двумя действиями (сложение, вычитание, умножение, деление).Использует целочисленную переменную h,для формирования примера в соответствии с уровнем сложности.
5) classspells –класс, содержащий информацию об уникальных способностях.
Параметры класса:
ints1,s2,s3;- содержат информацию о доступности для игрока уникальных способностей.
int wus1,wus2,wus3; — содержит информацию о том, были ли использованы заклинания в течении уровня.
Прототипы методовкласса:
spells(); — конструктор, выполняет инициализацию доступности уникальных способностей иустановку по умолчанию о том, что уникальные способности еще не былииспользованы.
6) classspecpooh: publicspells – класс, содержащийметоды по активации заклинаний для персонажа Вини-Пух.
Прототипы методовкласса:
specpooh():spells() {} – вызываетконструктор родительского класса spells.
voidmagic1(void);- активирует уникальную способность №1.
void magic2(void); — активирует уникальную способность №2.
void magic3(void); — активирует уникальную способность №3.
7) class specpiglet:public spells – класс, содержащий методы по активации заклинаний для персонажаПятачок.
Прототипы методовкласса:
specpiglet():spells() {} – вызываетконструктор родительского класса spells.
voidmagic1(void);- активирует уникальную способность №1.
void magic2(void); — активирует уникальную способность №2.
void magic3(void); — активирует уникальную способность №3
8) class spectigger:public spells – класс, содержащий методы по активации заклинаний для персонажаТигра.
Прототипы методовкласса:
spectigger():spells() {} – вызываетконструктор родительского класса spells.
voidmagic1(void);- активирует уникальную способность №1.
void magic2(void); — активирует уникальную способность №2.
void magic3(void); — активирует уникальную способность №3
9) classplayer – класс, содержащийвсе необходимые сведения о текущем игроке.
Параметры класса:
charname[16]; — имя игрока.
intlevel; — количество уровнейпройденных игроком.
intusetime; — среднее время,которое тратит на уровень игрок.
inthardness; — сложность.
inttype; — тип персонажа.
intb1; — доступность уникальнойспособности №1.
intb2; — доступность уникальнойспособности №2.
intb3; — доступность уникальнойспособности №3.
Прототипы методовкласса:
void activate(); — обеспечивает инициализацию всех параметров выбранного игрока. 2.3.Описание файлов проекта
Файл проекта:
cursed2.bpr– файл проект BorlandC++ Builder
Файлы с исходнымикодами:
1) cursed2.cpp– главный файл, выполняет инициализацию и запуск приложения. Создает формуглавного меню form_main.
2) database.h– содержит описание класса database.
3) database.cpp– содержит описание методов класса database.
4) exercise.h– содержит описание родительского абстрактного класса exercise,а также описание классов-потомков withoneи withtwo.
5) exercise.cpp– содержит описание методов классов-потомков withoneи withtwo.
6) gaming.h–содержит описание класса Tform_gaming — формы игрового процесса form_gaming.
7) gaming.cpp– содержит описание методов класса Tform_gaming — формы игрового процесса form_gaming.
8) help.h– содержит описание класса Tform_help — формы справки form_help.
9) help.cpp– содержит описание методов класса Tform_help — формы справки form_help.
10) main.h– содержит описание класса Tform_main- формы главного меню form_main.
11) main.cpp– содержит описание методов класса Tform_main- формы главного меню form_main.
12) market.h– содержит описание класса Tform_market- формы магазина form_market.
13) market.cpp– содержит описание методов класса Tform_market- формы магазина form_market.
14) player.h– содержит описание класса player.
15) player.cpp– содержит описание методов класса player.
16) profile.h– содержит описание класса Tform_profile- формы профилей form_profile.
17) profile.cpp– содержит описание методов класса Tform_profile- формы профилей form_profile.
18) records.h– содержит описание класса Tform_records- формы рекордов form_records.
19) records.cpp– содержит описание методов класса Tform_records- формы рекордов form_records.
20) spells.h– содержит описание родительского класса spells,а также описание классов-потомков specpooh,specpiglet, spectigger.
21) spells.cpp– содержит описание методов родительского класса spells,а также описание методов классов-потомков specpooh,specpiglet, spectigger.
22) gaming.dfm– файл формы игрового процесса.
23) help.dfm– файл формы справки.
24) main.dfm– файл формы главного меню.
25) market.dfm– файл формы магазина.
26) profile.dfm– файл формы профилей.
27) records.dfm– файл формы рекордов.
Файлы с графикой:
1) cloud.jpg– облачко для формы магазина.
2) creator.jpg– изображение создателя для формы помощи.
3) gamingbg.jpg– фоновое изображение для формы игрового процесса.
4) gb1.jpg– маленькая пиктограмма уникальной способности №1 Пятачка.
5) gb2.jpg– маленькая пиктограмма уникальной способности №2 Пятачка.
6) gb3.jpg– маленькая пиктограмма уникальной способности №3 Пятачка.
7) help.jpg– изображение для формы помощи.
8) lgb1.jpg– большая пиктограмма уникальной способности №1 Пятачка.
9) lgb2.jpg– большая пиктограмма уникальной способности №2 Пятачка.
10) lgb3.jpg– большая пиктограмма уникальной способности №3 Пятачка.
11) live.jpg– пиктограмма “жизни” для формы игрового процесса.
12) lpb1.jpg– большая пиктограмма уникальной способности №1 Винни-Пуха.
13) lpb2.jpg– большая пиктограмма уникальной способности №2 Винни-Пуха.
14) lpb3.jpg– большая пиктограмма уникальной способности №3 Винни-Пуха.
15) ltb1.jpg– большая пиктограмма уникальной способности №1 Тигры.
16) ltb2.jpg– большая пиктограмма уникальной способности №2 Тигры.
17) ltb3.jpg– большая пиктограмма уникальной способности №3 Тигры.
18) main.jpg– фоновое изображение для формы главного меню и формы профиля.
19) market.jpg– изображение продавца для формы магазина.
20) pb1.jpg– маленькая пиктограмма уникальной способности №1 Винни-Пуха.
21) pb2.jpg– маленькая пиктограмма уникальной способности №2 Винни-Пуха.
22) pb3.jpg– маленькая пиктограмма уникальной способности №3 Винни-Пуха.
23) piglet.jpg– большое изображение Пятачка.
24) piglet-min.jpg– маленькое изображение Пятачка.
25) pooh.jpg– большое изображение Винни-Пуха.
26) pooh-min.jpg– маленькое изображение Винни-Пуха.
27) records.jpg– фоновое изображение для формы рекордов.
28) tb1.jpg– маленькая пиктограмма уникальной способности №1 Тигры.
29) tb2.jpg– маленькая пиктограмма уникальной способности №2 Тигры.
30) tb3.jpg– маленькая пиктограмма уникальной способности №3 Тигры.
31) tigger.jpg– большое изображение Тигры.
32) tigger-min.jpg– маленькое изображение Тигры.
33) icon.ico – иконкаприложения.
Файлы со звуком:
1) alarm.wav– звук тревоги.
2) greentime.wav– звук подготовительных секунд.
3) spell.wav– звук заклинания.
Файл помощи:
helper.rtf– файл содержит справку в rtfформате.
Файлы базы данных:
1) profiles.db– главный файл учетных записей, содержит всю информацию об игроках.
2) tmp.db– временный файл, используемый для операций обработки главного файла учетныхзаписей.
В скомпилированномвиде, программа будет содержать только следующие файлы:
cursed2.exe,alarm.wav, greentime.wav, spell.wav, profiles.db, tmp.db, helper.rtf2.4.Описание работы проекта
/>
Рисунок 1 — Главноеменю, сразу после запуска приложения.
После запуска программывы увидите перед собой главное меню. В нем содержится 6 кнопок, и статустекущего профиля.
/> открывает окноуправления учетными записями.
/> открывает окно игровогопроцесса, сейчас она неактивна, так как ваш текущий профиль не выбран.
/> открывает окномагазина, сейчас она неактивна, так как ваш текущий профиль не выбран.
/> открывает окно помощи.
/> открывает окнорекордов.
/> завершает работупрограммы.
/>отображает текущийпрофиль.
/>
Рисунок 2 – Профиль
/> вызывает область выборатипа персонажа.
/> вызывает область дляактивации профиля.
/> вызывает область дляудаления профиля.
/> возвращает в главноеменю.
/>отображает всесуществующие профили.
/>
Рисунок 3 — Выборперсонажа
В области выбора новогоперсонажа даны изображения всех трех существующих персонажей и их описания, длявыбора необходимо кликнуть по понравившемуся персонажу.
/>
Рисунок 4 — Созданиенового персонажа
После того, как вывыбрали тип персонажа, вы попадете в область редактирования его параметров.
/> поле ввода именипрофиля.
/> отображает выбранногоперсонажа.
/> отображает выбраннуюсложность игру.
/> возвращает кобласти выбора персонажа.
/> заносит запись опрофиле в базу данных.
/>
Рисунок 5 — Выборпрофиля
Отображает всюинформацию о профиле, выбранном в листе профилей.
/>неактивное поле,отображает имя выбранного профиля.
/>отображает персонажавыбранного профиля.
/> неактивное меню,отображает сложность выбранного профиля.
/>отображает количествопройденных игроком уровней.
/> отображает среднеевремя, которое игрок затрачивает на уровень.
/>отображает“Успешность” выбранного профиля.
/> отображает доступностьуникальных способностей. Знак “-” означает, что способность недоступна, знак“+” означает, что способность доступна.
/> выполняет активациюпрофиля и отключает блокировку пунктов главного меню “Начатьигру” и “Магазин”.
/>
Рисунок 6 — Удалениепрофиля
Область удаленияпрофиля, выбранного для удаления в листе профилей практически полностьюаналогична области выбора профиля, единственное отличие в кнопках.
/> удаляет все записи обигроке из базы данных.
/>
Рисунок 7 — Главноеменю, после активации профиля
/> после активациипрофиля в Текущем профиле отображается имя активированного профиля.
/>
Рисунок 8 — Окноигрового процесса, при начале игры
/> ведет обратный отсчетвремени до 0.
/> ведет обратный отсчетрешенных примеров до 0.
/> отображает имя игрока.
/>отображает сложность игры.
/>отображает номерпроходимого уровня.
/>поле ввода ответов,неактивно до момента окончания подготовительного этапа, который длится в течении5 секунд после начал игры.
/> отображает уникальныеспособности игрока. Маленькие пиктограммы означают, что способность недоступна,или уже была использована. Большие пиктограммы означают, что способность можетбыть использована.
/> отображает количество “жизней”игрока.
/> возвращает в главноеменю.
/>
Рисунок 9 — окно игрового процесса, в течении игры
/>отображает текущийпример.
/>поле ввода принимаеткрасный цвет, если ваш предыдущий ответ был ошибочен и зеленый, если предыдущийответ был правильный.
/>
Рисунок 10 – Магазинпри заходе в него
/>отображает возможное дляпокупки заклинание.
/> возвращает в главноеменю.
/> подтверждает выборзаклинания и заносит информацию о его приобретении в базу данных.
/>
Рисунок 11 — Магазинпри выборе заклинания
/>отображает подсказку квыбранному заклинанию.
/> отображает категориюнавыка (Активный или Пассивный).
/>
Рисунок 12 – Об игре
Содержит руководствопользователя по всем аспектам игры.
/> возвращает в главноеменю.
/>
Рисунок 13 – Рекорды
Отображает результаты10 лучших игроков.
/> возвращает в главноеменю.2.5.Некоторые общие моменты
1) Извсех заголовков окон проекта была убрана кнопка Maximize,для запрещения изменения размеров с целью сохранения задуманных при дизайнепропорций.
2) Былпоставлен запрет на ручное изменение размеров окон, по той же причине.
3) Длясохранения общей “мультяшной” стилистики везде был использован текст со шрифтомMS ComicSans.
4) Всобытия закрытия всех окон был добавлен передаваемый по ссылке параметр Action=caFree,для освобождения памяти.
5) Длявсех форм была добавлена своя иконка. Эта же иконка добавлена и к исполняемомуфайлу самого приложения.
6) Длявведения баланса между различными уровнями сложности был введен параметр“Успешность”, который учитывая такие параметры как: сложность игры, количествопройденных уровней, среднее время затрачиваемое на уровень, формирует рейтингигрока.
7) Вподготовительное время, таймер подсвечивается зеленым цветом, и каждую секундуозвучивает мелодичный звук.
8) Приподходе времени выделенного на уровень к концу, таймер подсвечивается краснымцветом, и каждую секунду играет тревожный звуковой сигнал.
9) Иззаголовка формы игрового процесса была убрана кнопка закрытия, так как призажатии и удержании ее, таймер останавливался, что могло способствоватьнедобросовестной игре.
10) Программасобрана с параметрами, обеспечивающие независимость программного кода от средыразработки, то есть обладает полной переносимостью.
11) Дляпрограммы создан инсталлятор средствами WinRAR.
3.Заключение
Программа, безсомнения, полностью реализует свое основное назначение – тренировку устногосчета, а также вносит в это занятие увлекательный игровой процесс. Для еедальнейшего развития можно предложить совершенствование ролевой модели.Прокачку уникальных способностей, добавление древа профессий. Также возможнорасширение ее математического направления, например, добавить возможностьрешать уравнения, считать производные, интегралы.
4.Списокисточников информации
· “Программированиев C++ Builder 6”, А.Я. Архангельский, Москва “Бином” 2006.