Минобрнауки России
Санкт-Петербургский государственный политехнический университет
Институт информационных технологий и управления
Кафедра «Информационных и управляющих систем»
КУРСОВАЯ РАБОТА
Программирование на VS C++ с использованием WinAPI и STL
-Текстовый квест-
по дисциплине «Программирование на ЯВУ»
Выполнил
студент гр.2084/4 <подпись> А.С.Поддувалкин
Руководитель
доцент, к.т.н. <подпись> С.К.Круглов
«___» __________ 201__ г.
Санкт-Петербург
2012
Оглавление
-
Введение
-
Инструкция пользователя
-
Инструкция программиста
-
Код программы
-
Заключение
-
Список используемой литературы
Введение
Данный проект представляет собой программу, написанную на Visual Studio C++, с использованием WinAPI и STL(Standart Template Library). Программирование приложений под Windows, с использованием этих ресурсов помогает сильно сократить код программы, а также использовать уже готовые классы и шаблоны, что делает процесс написания приложения проще.
Программа, основанная на диалоговых окнах WinAPI, легко реализует графическую составляющую проекта, когда шаблоны и методы (алгоритмы) STL помогают упростить аналитическую часть программы.
В данном текстовом квесте, будут реализованы следующие составляющие:
-
Графическая составляющая, основанная на диалоговых окнах WinAPI, представляющих собой структуру классов, связанных между собой.
-
Аналитическая составляющая реализована с помощью STL. В частности, на шаблонах, которые там представлены.
Сам проект представляет из себя сюжетную историю, включающую в себя развитие событий, зависящее от действий игрока.
Я выбрал этот проект, потому что это – интересный опыт в программировании, а также перспективная задумка, которую можно дополнять и расширять, сделав полноценную игру, в которую можно будет играть, фактически, на любом компьютере и любой Операционной Системе, поддерживающей windows приложения или имеющая эмулятор (например, wine).
Инструкция пользователя
В данной главе я рассмотрю основополагающие принципы проекта, интересные пользователю:
-
Приложение представляет собой альтернативно-фантастический текстовый квест, включающий в себя сюжет и различные концовки, зависящие от действий играющего.
-
Проект содержит 9 финалов, лишь один из которых является правильным. Каждое окончание игры зависит от действий игрока и правильность прохождения им испытаний.
-
Испытания в квесте представлены в виде трёх тестов, которые будут определять различные характеристики, выведенные в конце вам в процентном виде.
Функционал программы:
-
Внимательно читайте то, что написано на экране. В диалоговом окне теста не забывайте, что сначала следует нажимать «Далее», а потом «Следующий вопрос». Ошибочное нажатие результата не принесёт.
-
Игра не содержит кнопки выхода, потому выход из приложения осуществляется посредством закрытия главного окна.
-
Игра не содержит функций обнуления, т.е., чтобы пройти квест во второй раз, вам придётся перезапустить приложение
-
В игре не предусмотрена функция обратного действия, т.е. вы не можете изменить выбор, который уже сделали (ведь в жизни так нельзя), потому тщательно обдумывайте свой выбор.
-
Программа не реализует сохранение данных, потому нет статистики прохождений.
Инструкция программиста
В данном разделе я рассмотрю основные составляющие проекты и использованные элементы:
-
WinAPI:
-
Графическая часть, реализованная на WinAPI включает в себя четыре диалоговых окна и, соответственно, четыре класса. Их структура представлена ниже:
Рассмотрим каждый класс в отдельности:
-
CCursDlg:
h_dlg – переменная, указывающая на класс CHistoryDlg
OnBnClicketButton2 – метод, обрабатывающий нажатие на кнопку.
InitVector – метод, служащий для инициализации массива. В этой версии не используется.
-
CHistoryDlg:
c_dlg1 – переменная, связанная с классом CChoiseDlg
t_dlg1 – переменная, связанная с классом CTestDlg
m_History – переменная, связанная с окном вывода сообщений
m_wind – переменная, служившая для выбора между вызовом окна выбора и окна тестом. В этой версии не используется.
fetch1\2\3 – методы, анализирующие выборы, которые делает игрок и подводящие итог. Каждый из этих методов начинает свою работу после первого выбора и до последнего.
InitVector – Процедура инициализации вектора, содержащего в себе стандартные концовки, результаты, переведённый из float в CString, а также все выборы, присутствующие в игре.
OnBnClickedButton1 – Процедура обработки нажатия на кнопку
-
CChoiseDlg
b_choise – в данной версии не используется
c_key – переменная, определяющая сделанный выбор (1, 2 или 3)
m_choise – переменная, которая выводит текст в Edit Box
OnBnClickedButton – процедура, обрабатывающая нажатие на кнопку
OnBnClickedRadioButton – процедуры, обрабатывающие выбор определённой RadioButton
-
CTestDlg
k_test – переменная, ответственная за номер теста, который проходится в данный момент, а также за окончание теста и прохождение всех тестов.
m_evil\good\intl\psycho – переменные, ответственные за результаты тестов, позже заменены на структуру данных и в данной версии не используются.
t_ch – переменная, ответственная за сделанный выбор на данном вопросе
t_key – в данной версии не используется
Testing – структура данных
Все переменные типа int. Служит для анализа результатов тестов.
Execute1\2\3 – процедуры прохождения тестов
InitVector – процедура, инициализирующая вектор, содержащий все тесты
OnBnClickedButton1\2 – процедуры, ответственные за обработку нажатия клавиш «Далее» и «Следующий вопрос»
OnBnClickedRadioButton – обработка выбора.
-
Из STL использованы следующий шаблоны:
list – список используется для сохранения двух результатов: от выборов и от тестов. Введён для простого введения обнуления и бесконечного числа прохождений, не перезагружая приложение
vector – в нескольких векторах хранятся почти все текстовые данные, результаты в числах с плавающей запятой
list::iterator – итераторы для списка.
Более подробно в следующем разделе