Быстрый счет

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Южно-Уральский государственный университет

Кафедра «Информатика»













ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой  работе 
по дисциплине «высокоуровневые методы информатики и программирования»

Тема: Быстрый счет







Выполнил: Плохов  В.В.

Специальность: 080801

Группа: ЭиУ - 263















Челябинск – 2007


Оглавление

	1.Введение

	2.Основная часть  

	2.1.Постановка задачи  

	2.2.Разработка объектной модели программы  

	2.3.Описание файлов проекта  

	2.4.Описание работы проекта  

	2.5.Некоторые общие моменты  

	3.Заключение  

	4.Список источников информации  


1.Введение



Разработка программы велась с использованием средств Объектно-Ориентированного Программирования (ООП). ООП - концепция, которая в свое время произвела настоящую революцию в программировании. До появления ООП программа представляла собой логически  единый код с ярко выраженными функциональными зависимостями (процедурный подход). ООП предполагает, что приложение строится из набора независимых по своему внутреннему устройству объектов. Таким образом, каждый объект может содержать собственные данные, недоступные другим объектам системы. Очевидно, что абсолютно независимыми объекты быть не могут, поскольку им необходимо взаимодействовать между собой, использовать общие данные и обмениваться собственными данными. Но, пока не меняется механизм взаимодействия с другими объектами системы, внутреннее устройство объекта можно изменять по своему желанию, не затрагивая других компонент системы. 


2.Основная часть



2.1.Постановка задачи



Главной задачей является разработка законченного приложения, позволяющего в игровой форме тренировать и улучшать навыки устного счета. Поскольку программа главным образом ориентирована на пользователя младшего и среднего школьного возраста, то за главную тематическую идею программы были взяты знаменитые сказочные персонажи из знаменитого произведения Алана Александра Милна “Вини-Пух и Все-Все-Все”, которые выполнены в стилистике одноименного диснеевского мультфильма.

	Необходимый для реализации функционал:

Разработка системы управления учетными записями, для возможности использования одного приложения множеством пользователей.

Разработка системы создания учетной записи.

Разработка системы удаления учетной записи.

Разработка системы активации учетной записи.

Разработка алгоритмов взаимодействия с базой данных.

Разработка системы защиты от внесения ошибочных параметров в базу данных.

Разработка формирования таблицы рекордов, для возможности отслеживания лучших результатов, среди игроков.

Разработка математической модели для возможности сбалансированного формирования рейтинга между игроками различных уровней сложности.

Разработка алгоритма подсчета лучших результатов в записях базы данных.

Разработка алгоритма сортировки лучших результатов в записях базы данных.

Разработка ролевой модели.

Разработка различных видов персонажей.

Разработка уникальных способностей каждого из персонажей.

Разработка системы получения новых способностей.

Разработка базы данных.

Разработка синтаксиса файлов базы данных.

Разработка полей параметров хранимых в базе данных.

Имя

Персонаж

Количество пройденных уровней

Среднее время прохождения уровня

Статус уникальной способности №1

Статус уникальной способности №2

Статус уникальной способности №3

Разработка алгоритмов обеспечивающих формирование файлов базы данных.

Разработка основного игрового процесса.

Разработка системы реализации различных уровней сложности.

Разработка генератора примеров с учетом выбранной сложности.

Поддержка операций сложения.

Поддержка операций вычитания.

Поддержка операций умножения.

Поддержка операций деления.

Обеспечение  генерации примеров с учетом обязательности целочисленного положительного, либо целочисленного отрицательного ответа.

Разработка таймера, контролирующего отсчет игрового времени.

Разработка контроля правильности ответа.

Разработка системы “жизней”, для ограничения количества неверных ответов.

Разработка влияния уникальных способностей на игровой процесс.

Разработка системы приобретения новых уникальных способностей.

Разработка алгоритмов контролирующих доступность приобретения способностей.

Разработка алгоритмов обеспечивающих запись о новых способностях в базу данных.

Разработка справочной системы и документации.

Разработка графической оболочки приложения.

Разработка главного меню.

Разработка окна управления учетными записями.

Разработка окна основного игрового процесса.

Разработка окна “Магазина”, для приобретения новых способностей.

Разработка окна справочной системы.

Разработка окна таблицы рекордов.



2.2.Разработка объектной модели программы



При написании приложения использовались основные принципы ООП. Ниже перечислены используемые в программе классы:

1) class database – “Пустой” класс, который содержит только статические методы, по работе с файлами базы данных.

Прототипы методов класса:

static int add_player(); - обеспечивает добавление новой сформированной записи в файл базы данных.

static void del_player(int n); - обеспечивает удаление записи из файла базы данных. Передаваемый целочисленный параметр n, указывает номер удаляемой строки содержащейся в базе данных.

static void init_list(); - обеспечивает инициализацию листа списка учетных записей из файла базы данных.

static void read_player(); - обеспечивает считывание параметров учетной записи из файла базы данных и формирует окно параметров игрока в системе управления учетными записями.

static void save_player(); - обеспечивает сохранение обновленных параметров игрока в файле базы данных.

2) class exercise – абстрактный класс, который содержит параметры генерируемого примера, а также содержит абстрактный метод генерации примера. Имеет двух потомков: withone, withtwo.

Параметры класса:

int a, int b, int c; – числовые значения формирующие элементы примера.

int answ; – числовое значение содержащее правильный ответ на сформированный пример.

int sign, int sign2; – числовые значения формирующие первый и второй знак примера соответственно.

Прототипы методов класса:

virtual void 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) class spells – класс, содержащий информацию об уникальных способностях.

Параметры класса:

int s1,s2,s3; - содержат информацию о доступности для игрока уникальных способностей.

int wus1,wus2,wus3; - содержит информацию о том, были ли использованы заклинания в течении уровня.

Прототипы методов класса:

spells(); - конструктор, выполняет инициализацию доступности уникальных способностей и установку по умолчанию о том, что уникальные способности еще не были использованы.

6) class specpooh: public spells – класс, содержащий методы по активации заклинаний для персонажа Вини-Пух.

Прототипы методов класса:

specpooh(): spells() {} – вызывает конструктор родительского класса spells.

void magic1(void); - активирует уникальную способность №1.

void magic2(void); - активирует уникальную способность №2.

void magic3(void); - активирует уникальную способность №3.

7) class specpiglet: public spells – класс, содержащий методы по активации заклинаний для персонажа Пятачок.

Прототипы методов класса:

specpiglet(): spells() {} – вызывает конструктор родительского класса spells.

void magic1(void); - активирует уникальную способность №1.

void magic2(void); - активирует уникальную способность №2.

void magic3(void); - активирует уникальную способность №3

8) class spectigger: public spells – класс, содержащий методы по активации заклинаний для персонажа Тигра.

Прототипы методов класса:

spectigger(): spells() {} – вызывает конструктор родительского класса spells.

void magic1(void); - активирует уникальную способность №1.

void magic2(void); - активирует уникальную способность №2.

void magic3(void); - активирует уникальную способность №3

9) class player – класс, содержащий все необходимые сведения о текущем игроке.

Параметры класса:

char name[16]; - имя игрока.

int level; - количество уровней пройденных игроком.

int usetime; - среднее время, которое тратит на уровень игрок.

int hardness; - сложность.

int type; - тип персонажа.

int b1; - доступность уникальной способности №1.

int b2; - доступность уникальной способности №2.

int b3; - доступность уникальной способности №3.

Прототипы методов класса:

void activate(); - обеспечивает инициализацию всех параметров выбранного игрока.



2.3.Описание файлов проекта



Файл проекта:

cursed2.bpr – файл проект Borland C++ Builder

Файлы с исходными кодами:

cursed2.cpp – главный файл, выполняет инициализацию и запуск приложения. Создает форму главного меню form_main.

database.h – содержит описание класса database.

database.cpp – содержит описание методов класса database.

exercise.h – содержит описание родительского абстрактного класса exercise, а также описание классов-потомков withone и withtwo.

exercise.cpp – содержит описание методов классов-потомков withone и withtwo.

gaming.h – содержит описание класса Tform_gaming - формы игрового процесса form_gaming.

gaming.cpp – содержит описание методов класса Tform_gaming - формы игрового процесса form_gaming.

help.h – содержит описание класса Tform_help - формы справки form_help.

help.cpp – содержит описание методов класса Tform_help - формы справки form_help.

main.h – содержит описание класса Tform_main - формы главного меню form_main.

main.cpp – содержит описание методов класса Tform_main - формы главного меню form_main.

market.h – содержит описание класса Tform_market - формы магазина form_market.

market.cpp – содержит описание методов класса Tform_market - формы магазина form_market.

player.h – содержит описание класса player.

player.cpp – содержит описание методов класса player.

profile.h – содержит описание класса Tform_profile - формы профилей form_profile.

profile.cpp – содержит описание методов класса Tform_profile - формы профилей form_profile.

records.h – содержит описание класса Tform_records - формы рекордов form_records.

records.cpp – содержит описание методов класса Tform_records - формы рекордов form_records.

spells.h – содержит описание родительского класса spells, а также описание классов-потомков specpooh, specpiglet, spectigger.

spells.cpp – содержит описание методов родительского класса spells, а также описание методов классов-потомков specpooh, specpiglet, spectigger.

gaming.dfm – файл формы игрового процесса.

help.dfm – файл формы справки.

main.dfm – файл формы главного меню.

market.dfm – файл формы магазина.

profile.dfm – файл формы профилей.

records.dfm – файл формы рекордов.

Файлы с графикой:

cloud.jpg – облачко для формы магазина.

creator.jpg – изображение создателя для формы помощи.

gamingbg.jpg – фоновое изображение для формы игрового процесса.

gb1.jpg – маленькая пиктограмма уникальной способности №1 Пятачка.

gb2.jpg – маленькая пиктограмма уникальной способности №2 Пятачка.

gb3.jpg – маленькая пиктограмма уникальной способности №3 Пятачка.

help.jpg – изображение для формы помощи.

lgb1.jpg – большая пиктограмма уникальной способности №1 Пятачка.

lgb2.jpg – большая пиктограмма уникальной способности №2 Пятачка.

lgb3.jpg – большая пиктограмма уникальной способности №3 Пятачка.

 live.jpg – пиктограмма “жизни” для формы игрового процесса.

lpb1.jpg – большая пиктограмма уникальной способности №1 Винни-Пуха.

lpb2.jpg – большая пиктограмма уникальной способности №2 Винни-Пуха.

lpb3.jpg – большая пиктограмма уникальной способности №3 Винни-Пуха.

ltb1.jpg – большая пиктограмма уникальной способности №1 Тигры.

ltb2.jpg – большая пиктограмма уникальной способности №2 Тигры.

ltb3.jpg – большая пиктограмма уникальной способности №3 Тигры.

main.jpg – фоновое изображение для формы главного меню и формы профиля.

market.jpg – изображение продавца для формы магазина.

pb1.jpg – маленькая пиктограмма уникальной способности №1 Винни-Пуха.

pb2.jpg – маленькая пиктограмма уникальной способности №2 Винни-Пуха.

pb3.jpg – маленькая пиктограмма уникальной способности №3 Винни-Пуха.

piglet.jpg – большое изображение Пятачка.

piglet-min.jpg – маленькое изображение Пятачка.

pooh.jpg – большое изображение Винни-Пуха.

pooh-min.jpg – маленькое изображение Винни-Пуха.

records.jpg – фоновое изображение для формы рекордов.

tb1.jpg – маленькая пиктограмма уникальной способности №1 Тигры.

tb2.jpg – маленькая пиктограмма уникальной способности №2 Тигры.

tb3.jpg – маленькая пиктограмма уникальной способности №3 Тигры.

tigger.jpg – большое изображение Тигры.

tigger-min.jpg – маленькое изображение Тигры.

icon.ico – иконка приложения.

Файлы со звуком:

alarm.wav – звук тревоги.

greentime.wav – звук подготовительных секунд.

spell.wav – звук заклинания.

Файл помощи:

helper.rtf – файл содержит справку в rtf формате.

Файлы базы данных:

1) profiles.db – главный файл учетных записей, содержит всю информацию об игроках.

2) tmp.db – временный файл, используемый для операций обработки главного файла учетных записей.

В скомпилированном виде, программа будет содержать только следующие файлы:

cursed2.exe, alarm.wav, greentime.wav, spell.wav, profiles.db, tmp.db, helper.rtf

2.4.Описание работы проекта



Рисунок 1 - Главное меню, сразу после запуска приложения.

После запуска программы вы увидите перед собой главное меню. В нем содержится 6 кнопок, и статус текущего профиля.

   открывает окно управления учетными записями.

  открывает окно игрового процесса, сейчас она неактивна, так как ваш текущий профиль не выбран.

  открывает окно магазина, сейчас она неактивна, так как ваш текущий профиль не выбран.

  открывает окно помощи.

  открывает окно рекордов.

  завершает работу программы.

отображает текущий профиль.



Рисунок 2 – Профиль



 вызывает область выбора типа персонажа.

 вызывает область для активации профиля.

 вызывает область для удаления профиля.

 возвращает в главное меню.

отображает все существующие профили.



Рисунок 3 - Выбор персонажа

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



Рисунок 4 - Создание нового персонажа



После того, как вы выбрали тип персонажа, вы попадете в область редактирования его параметров. 

  поле ввода имени профиля.

 отображает выбранного персонажа.

 отображает выбранную сложность игру.

 возвращает к области выбора персонажа.

  заносит запись о профиле в базу данных.





Рисунок 5 - Выбор профиля

Отображает всю информацию о профиле, выбранном в листе профилей.

неактивное поле, отображает имя выбранного профиля.

отображает персонажа выбранного профиля.

 неактивное меню, отображает сложность выбранного профиля.

отображает количество пройденных игроком уровней.

 отображает среднее время, которое игрок затрачивает на уровень.

отображает “Успешность”  выбранного профиля.

 отображает доступность уникальных способностей. Знак “-” означает, что способность недоступна, знак “+” означает, что способность доступна.

 выполняет активацию профиля и отключает блокировку пунктов главного меню “Начать игру” и “Магазин”.



Рисунок 6 - Удаление профиля

Область удаления профиля, выбранного для удаления в листе профилей практически полностью аналогична области выбора профиля, единственное отличие в кнопках.

 удаляет все записи об игроке из базы данных.



Рисунок 7 - Главное меню, после активации профиля

 после активации профиля в Текущем профиле отображается имя активированного профиля.



Рисунок 8 - Окно игрового процесса, при начале игры

 ведет обратный отсчет времени до 0.

 ведет обратный отсчет решенных примеров до 0.

 отображает имя игрока.

отображает сложность игры.

отображает номер проходимого уровня.

поле ввода ответов, неактивно до момента окончания подготовительного этапа, который длится в течении 5 секунд после начал игры.

 отображает уникальные способности игрока. Маленькие пиктограммы означают, что способность недоступна, или уже была использована. Большие пиктограммы означают, что способность может быть использована.

 отображает количество “жизней” игрока.

 возвращает в главное меню.





Рисунок 9 - окно игрового процесса, в течении игры



отображает текущий пример.

поле ввода принимает красный цвет, если ваш предыдущий ответ был ошибочен и зеленый, если предыдущий ответ был правильный.



Рисунок 10 – Магазин при заходе в него

отображает возможное для покупки заклинание.

 возвращает в главное меню.

 подтверждает выбор заклинания и заносит информацию о его приобретении в базу данных.



Рисунок 11 - Магазин при выборе заклинания

отображает подсказку к выбранному заклинанию.

 отображает категорию навыка (Активный или Пассивный).



Рисунок 12 – Об игре

Содержит руководство пользователя по всем аспектам игры.

 возвращает в главное меню.



Рисунок 13 – Рекорды

Отображает результаты 10 лучших игроков.

 возвращает в главное меню.

2.5.Некоторые общие моменты

Из всех заголовков окон проекта была убрана кнопка Maximize, для запрещения изменения размеров с целью сохранения задуманных при дизайне пропорций.

Был поставлен запрет на ручное изменение размеров окон, по той же причине.

Для сохранения общей “мультяшной” стилистики везде был использован текст со шрифтом MS Comic Sans.

В события закрытия всех окон был добавлен передаваемый по ссылке параметр Action=caFree, для освобождения памяти.

Для всех форм была добавлена своя иконка. Эта же иконка добавлена и к исполняемому файлу самого приложения.

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

В подготовительное время, таймер подсвечивается зеленым цветом, и каждую секунду озвучивает мелодичный звук.

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

Из заголовка формы игрового  процесса была убрана кнопка закрытия, так как при зажатии и удержании ее, таймер останавливался, что могло способствовать недобросовестной игре.

Программа собрана с параметрами, обеспечивающие независимость программного кода от среды разработки, то есть обладает полной переносимостью.

Для программы создан инсталлятор средствами WinRAR.


3.Заключение



Программа, без сомнения, полностью реализует свое основное назначение – тренировку устного счета, а также вносит в это занятие увлекательный игровой процесс. Для ее дальнейшего развития можно предложить совершенствование ролевой модели. Прокачку уникальных способностей, добавление древа профессий. Также возможно расширение ее математического направления, например, добавить возможность решать уравнения, считать производные, интегралы.


4.Список источников информации



“Программирование в C++ Builder 6”, А.Я. Архангельский, Москва “Бином” 2006.









2